- Home /
How to use multiple else if statements C#
Everytime I click the GUI I make it loads the first level "Castle1" when it should be loading either "Castle2" or "Castle3". I'm assuming this has something to do with the fact that I'm not using Else If correctly, but how exactly do I use it if I need to use several of them in succession?
if(LevelTwoComplete == false &&(PlayerPrefs.GetInt("Castle1Clear")==0)&&(PlayerPrefs.GetInt("Castle2Clear")==0)){
if(GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"Castle")){
Application.LoadLevel("Castle1");
}
else if(LevelTwoComplete == false &&(PlayerPrefs.GetInt("Castle1Clear")==1)&&(PlayerPrefs.GetInt("Castle2Clear")==0)){
if(GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"Castle")){
Application.LoadLevel("Castle2");
}
else if(LevelTwoComplete == false &&(PlayerPrefs.GetInt("Castle1Clear")==0)&&(PlayerPrefs.GetInt("Castle2Clear")==1)){
if(GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"Castle")){
Application.LoadLevel("Castle3");
}
else if(LevelTwoComplete == true){
GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"X");
}
Answer by tanoshimi · Dec 15, 2014 at 05:36 PM
Your brackets are unmatched - that code sample shouldn't even compile (unless you've got a whole load of }s at the end that you missed off your code sample). Try this instead:
if(LevelTwoComplete == false &&(PlayerPrefs.GetInt("Castle1Clear")==0)&&(PlayerPrefs.GetInt("Castle2Clear")==0)){
if(GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"Castle")){
Application.LoadLevel("Castle1");
}
}
else if(LevelTwoComplete == false &&(PlayerPrefs.GetInt("Castle1Clear")==1)&&(PlayerPrefs.GetInt("Castle2Clear")==0)){
if(GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"Castle")){
Application.LoadLevel("Castle2");
}
}
else if(LevelTwoComplete == false &&(PlayerPrefs.GetInt("Castle1Clear")==0)&&(PlayerPrefs.GetInt("Castle2Clear")==1)){
if(GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"Castle")){
Application.LoadLevel("Castle3");
}
}
else if(LevelTwoComplete == true){
GUI.Button(new Rect(Screen.width/2.75f,Screen.height/6,Screen.width/6,Screen.height/3),"X");
}
Answer by Mmmpies · Dec 15, 2014 at 05:45 PM
Or consider using switch, this script from the tutorial video for Switch Statements
using UnityEngine;
using System.Collections;
public class ConversationScript : MonoBehaviour
{
public int intelligence = 5;
void Greet()
{
switch (intelligence)
{
case 5:
print ("Why hello there good sir! Let me teach you about Trigonometry!");
break;
case 4:
print ("Hello and good day!");
break;
case 3:
print ("Whadya want?");
break;
case 2:
print ("Grog SMASH!");
break;
case 1:
print ("Ulg, glib, Pblblblblb");
break;
default:
print ("Incorrect intelligence level.");
break;
}
}
}
In your case you could hold an int called NextLevel which is just your current level + 1 then use
void LevelComplete()
{
switch (NextLevel)
Your answer
Follow this Question
Related Questions
Displaying PlayerPref As Text Using New Unity GUI 1 Answer
If two PlayerPrefs are on? 2 Answers
Achievement System 2 Answers
How to set high score (best time) with playerprefs 1 Answer
GUI.TextField problem, won't update var. 0 Answers