After I updated to Unity Pro 3.5.6f4 my (previously working) script stopped working:
IEnumerator Start () {
// More code here...
Screen.SetResolution(1920, 1080, true, 0);
Debug.Log("Begin yield");
Debug.Log(Time.timeScale);
// Wait for new screen resolution to take effect
yield return new WaitForSeconds(1.0f);
Debug.Log("Done yielding");
// More code here...
}
The output from the above log is:
Begin yield
1
So I can not get past the yield statement. I have tried to remove and reapply the script. I have also tried to do “Reimport all” on my project. All without success. Any ideas??
After an idea from: WaitForSeconds vs yield every frame - Questions & Answers - Unity Discussions
I tried to replace the waitforseconds instruction with the following instead
float delay = 1.0f;
print ("Start Time: " + Time.time);
print ("Delay: " + delay);
print ("Time scale: " + Time.timeScale);
float done = Time.time + delay;
while(Time.time < done) {
print ("Time: "+ Time.time + " Realtime: " + Time.realtimeSinceStartup);
yield return 0;
}
But this gives me the following output:
Start Time: 0
Delay: 1
Time scale: 1
Time: 0 Realtime: 0.1746936
Time: 0 Realtime: 0.8073034
Time: 0 Realtime: 0.9108546
Time: 0 Realtime: 1.17599
Time: 0 Realtime: 1.183453
Time: 0 Realtime: 1.199383
Time: 0 Realtime: 1.207282
Time: 0 Realtime: 1.218535
So for some reason the time is standing still.
The answer in this case was that another script set the Time.timeScale to zero. This was not visible outside the yield statement. But was clearly visible by running:
float delay = 1.0f;
print ("Start Time: " + Time.time);
print ("Time scale: " + Time.timeScale);
float done = Time.time + delay;
while(Time.time < done) {
print ("Time: "+ Time.time + " Realtime: " + Time.realtimeSinceStartup + " TimeScale: " + Time.timeScale);
yield return 0;
}
Which gave me the following output:
Start Time: 0
Time scale: 1
Time: 0 Realtime: 0.15797 TimeScale: 1
Time: 0 Realtime: 0.8051 TimeScale: 0
Time: 0 Realtime: 1.154805 TimeScale: 0
Time: 0 Realtime: 1.188964 TimeScale: 0
Time: 0 Realtime: 1.19767 TimeScale: 0
Which made the real problem visible (ie. the time scale gets set to zero)