- 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.