- Home /
 
How to unfreeze a Script in a unity5 Scene?
So i have Scene1 and Scene2 and SceneGame.I put a timmer on Scene1 that after 6 seconds it load the next Scene2*in this case is Scene 2*. The same i did with Scene2 . I also made a Pause Menu in SceneGame Witha Buton that load Scene1. Until here all worked perfectly but if i enter again in scene1 from SceneGame via that Scene1 Button , the timer Script is freezed. Why? Also i recieve this error ;
" ArgumentException: get_deltaTime can only be called from the main thread. Constructors and field initializers will be executed from the loading thread when loading a scene. Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function. Translate..ctor ()"
Here is a Scheme of my Scenes; Scene1->Scene2->SceneGame where i click the Scene1 Button->Scene1 and here all scripts are freezed even if the worked first time. Here is the Timer Script ;
 public float timer;
 public string Scene;
 void Start(){
     Update ();
 }
 void Update(){
     timer -= Time.deltaTime;
     if (timer <= 0) {
         timer = 0;
         Application.LoadLevel (Scene);
     }
 }
 
               Sory for my bad english . Thank you .
Answer by phxvyper · May 11, 2015 at 01:11 AM
Update() is automatically called each frame, there is no need to ever call the Update() function manually.
I suggest that you removed " Update (); " from your Start() function.
The reason why you are getting this ArgumentException is because you are calling Update() from your Start() function - you are therefore calling Time.deltaTime from the Start() function, since your code is functionally equivalent to the following:
 public float timer;
 public string Scene;
 void Start(){
     timer -= Time.deltaTime;
     if (timer <= 0) {
         timer = 0;
         Application.LoadLevel (Scene);
     }
 }
 void Update(){
     timer -= Time.deltaTime;
     if (timer <= 0) {
         timer = 0;
         Application.LoadLevel (Scene);
     }
 }
 
               Moral of the story: Never call Update() within the Start() function.
On an equally-as-important side-note: Make sure that you've set your Time.timeScale back to 1 when exiting your pause menu! (Thanks to @Awesomeausti316 )
See what I thought he did was didn't put the timescale back to one whenever he left his pause menu. The question itself didn't really go into description of his pause code so I was gonna suggest that.
Your answer