|
I've recently discovered coroutines, which make a sequence of events, separated by time for instance, easy to do, or allows me to delay a bit of script logic very easily - i.e. play the animation 5 seconds from now. I'm developing for iOS however, so I'm wondering whether coroutines are a good idea on iOS or are they likely to quickly impact performance? I really don't want to have to start writing lots of state machines in the Update() method - are coroutines really just handling that boilerplate for me? If I yield return StartCoroutine() am I creating some heavy weight object? What about returning new WaitForSeconds() objects? I appreciate this might be quite a tough question to answer 'off the top of your head', so I guess I am looking for; either someone who has some metrics; someone 'in the know'; or perhaps someone writing for iOS who is using them and has had either a good or bad experience as a result and is willing to share! :) Thanks in advance H
(comments are locked)
|
|
Coroutines are faster than running state machines in Update. It's the difference between checking what do to each frame before doing it, and being told when to do something and doing it. For more in-depth info, read this article. http://altdevblogaday.com/2011/07/07/unity3d-coroutines-in-detail/
Aug 01 '11 at 05:41 AM
Joshua
That's a great article. Not only does that explain how coroutines work, but it also elaborates on what exactly the yield keyword does. Anyone working with .Net, also outside Unity, can benefit from that.
Aug 01 '11 at 06:52 AM
CHPedersen
@Bovine: I wouldn't have answered the question definitively like that if I didn't have experience in this area. ;) Update isn't magic; it also has overhead (plus it runs every frame whether you need it to or not).
Aug 01 '11 at 04:55 PM
Eric5h5
@Bovine, from past experience, simply calling
Aug 03 '11 at 03:36 AM
Peter G
(comments are locked)
|
|
They are a great things and should definitely be used and exploited, they save performance if used correctly. Have a read up on; http://unity3d.com/support/documentation/ScriptReference/index.Coroutines_26_Yield.html I've read the help but it doesn't talk about the cost of starting a coroutine, nesting them and of returning new objects such as WaitForSeconds(). It also doesn't mention the impact on different platforms - specifically mobile!
Aug 03 '11 at 10:30 AM
Bovine
(comments are locked)
|
