- Home /
Can't go back to the game scene from main menu for the second time
So, I have a button in main menu with this code
var soundhover : AudioClip;
var beep : AudioClip;
var QuitButton : boolean = false;
function OnMouseEnter(){
audio.PlayOneShot(soundhover);
} function OnMouseUp(){
audio.PlayOneShot(beep);
yield new WaitForSeconds(0.35);
if(QuitButton){
Application.Quit();
}
else{
Application.LoadLevel("tanktes");
}
} @script RequireComponent(AudioSource);
I can do the LoadLevel alright for the first time. And then I pause Ingame and go back to main menu by clicking a code. Here's the pause code :
if(Input.GetButtonUp("Esc"))
{
doWindow0 = true;
Screen.lockCursor = false;
Screen.showCursor = true;
Time.timeScale = 0;
}
And here's the Back to menu button code:
if(GUI.Button (Rect (10,30, 150,20), "Back to Menu"))
Application.LoadLevel("StartMenu");
And I can go back to the main menu. But this time, the play game button AND the quit button are not working (tested it on the .exe file). The audio when the mouse is hovering plays fine so we can assume the script is working, but it's not going back to the game scene. What seems to be the cause of this? Helps appreciated.
$$anonymous$$aybe you should put Time.timeScale back to 1.0
Does anyone know whether Update still happens if timeScale is set to 0? Someone should test that.
If I write :
if(GUI.Button (Rect (10,30, 150,20), "Back to $$anonymous$$enu"))
Time.timeScale = 1.0;
Application.LoadLevel(level);
When I pause the game it suddenly go back to the main menu without even clicking the "Back to $$anonymous$$enu" button..
Answer by meazant · Oct 31, 2011 at 06:06 AM
Thank you for all of your help, I've found the problem. Yes, I need to turn back the Time.timeScale to 1 and also I have an error in the if statement. It lacks a {}. Newbish mistake and I am sorry for that. Nevertheless, always glad to get such speedy responses from Unity3D Answers people. Have a nice day :)
This is why I always put the brackets around if statements, even if they are only one line long. It gets you in the habit for when it's important.
Answer by Computoguy · Oct 30, 2011 at 12:42 PM
Try adding an extra variable called something like 'levelToLoad' and make it a string variable. Then, replace any Application.loadLevel("levelname");
with levelToLoad. Everytime you click on the object which will load the level, it with an object in your scene, goto where it says Level To Load and put in the name of your level. That works for me.
*var levelToLoad : String;* var soundhover : AudioClip; var beep : AudioClip; var QuitButton : boolean = false; function OnMouseEnter(){ audio.PlayOneShot(soundhover); } function OnMouseUp(){ audio.PlayOneShot(beep); yield new WaitForSeconds(0.35); if(QuitButton){ Application.Quit(); } else{ Application.LoadLevel(levelToLoad); } } @script RequireComponent(AudioSource)Hopefully that will work.
Your answer
Follow this Question
Related Questions
My GUITexture Script doesn't re-activate when reloading a level. 3 Answers
Main Menu in different scene - pause game 3 Answers
Pause at end of game 2 Answers
Proper way for Quit Application 2 Answers
Button on pause menu not showing up 0 Answers