- Home /
Best way to get time within a coroutine?
I'm trying to keep track of time within a loop in a coroutine. I'm doing massive operations with (e.g. instantiating tens of thousands of objects for a data visualization) that can take 10 or 20 seconds. What I'd like to do is check the elapsed time at regular intervals in the looping structure, and yield a frame when a max time has passed.
I've seen a couple solutions around here and in the Unity documentation:
System.Diagnostics.Stopwatch
System.DateTime.Now
Time.realtimeSinceStartup
My question is whether there is one of these that is going to be better / more reliable across a range of platforms (standalone, web player, mobile). The obvious choice would be the Unity function Time.realtimeSinceStartup, but I've read that this has issues on iPhone.
In a general sense, I'm curious: the way that Unity compiles to Mono .Net and then to whatever language/hardware (e.g. Objective-C for iPhone), do I need to be wary of making System calls or specific libraries within system (like System.Xml)? Am I going to run into compatibility issues on non-Windows systems?
Can't answer your questions thoroughly, but basically I'm sure that you need
Time.realtimeSinceStartup
for any benchmarking necessities (it's basically the timer you use to recreate unity's profiler functionalities). Not aware of iPhones possible issues with it though.
Answer by Joshua · Aug 18, 2011 at 04:23 PM
Not a very useful answer perhaps, but I've always used System.DateTime.Now succesfully. Not aware of any issues with Time.realtimeSinceStartup though.
What types of builds have you used it successfully in?
Here are some examples of issues I've seen with realtimeSinceStartup:
http://forum.unity3d.com/threads/44782-realtimeSinceStartup-and-PC-Ti$$anonymous$$g-don-t-match.
http://answers.unity3d.com/questions/139636/timerealtimesincestartup-returns-negative-number.html
Your answer
Follow this Question
Related Questions
How to check if input was made x seconds/frames ago? 0 Answers
See if a time span is bigger than X 4 Answers
stop game for 1 second 2 Answers
C# yield not doing anything 2 Answers
How to wait for Start() to run when calling InstantiateObject() 1 Answer