- Home /
Change to scene based on current scene
In order to avoid multiple scripts, I'm wanting to link a GUI button to load another scene based on the current scene its on.
To expand, I have 3 scenes (lets call them 1, 2 and 3) and 3 sub scenes (lets call them 1A, 2A and 3A). When I'm on Scene 1 and I click the GUI button, I want it to link to Scene 1A, and when I'm in Scene 1A, I want the GUI button to link back to Scene 1. I've got a separate button to link to Scenes 2 and 3 but want the same thing to happen when I'm in the other scenes with that GUI button; link to Scenes 2A and 3A and back again.
I've currently got this script that doesn't work:
if(GUI.Button (new Rect (Screen.width * (4.78f / 6.55f), Screen.height * (0f / 6.3f), Screen.width * (0.35f / 6.55f), Screen.height * (0.5f / 6.3f)), "Scale"))
if(Application.loadedLevelName == "Scene 1"){
Application.LoadLevel ("Scene 1A");
}
if(Application.loadedLevelName == "Scene 1A"){
Application.LoadLevel ("Scene 1");
}
I've currently got this script that doesn't work
What does 'doesn't work' mean?
I guess you end up inside both of the ifs because you don't have an 'else' between there? The first if loads "Scene 1A" and then you end up in the second one because that scene is now loaded, throwing you right back to where you started.
ALWAYS have an else between ifs that shouldn't/can't be true at the same time.
Answer by hollym16 · Feb 09, 2015 at 04:33 PM
I've solved this with a bit of luck and some hard thinking; I was getting if and else statements confused. Anyway, heres what worked for me in the end:
if(GUI.Button (new Rect (Screen.width * (4.78f / 6.55f), Screen.height * (0f / 6.3f), Screen.width * (0.35f / 6.55f), Screen.height * (0.5f / 6.3f)), "Scale"))
if(Application.loadedLevelName == "Scene1"){
Application.LoadLevel ("Scene1A");
}
else{
if(Application.loadedLevelName == "Scene1A"){
Application.LoadLevel ("Scene1");
}
else{
if(Application.loadedLevelName == "Scene2"){
Application.LoadLevel ("Scene2A");
}
else{
if(Application.loadedLevelName == "Scene2A"){
Application.LoadLevel ("Scene2");
}
}
}
}