- Home /
How to get around adding loads of "if" commands in my script
hey all, so below is the script im using in my main level selection menu. when the button is pressed, a level will load. however my menu will feature a lot of buttons for different levels. i was going to add in a bunch of "if commands" in the script that say for example: if button has tag "01" > load level 1
is this the best way to do this? or am i missing a more simpler way? using UnityEngine; using System.Collections;
public class TouchButton : MonoBehaviour {
void Update () {
//*** added the feauture for Android to Exit when back key is pressed***
if (Input.GetKeyDown(KeyCode.Escape))
Application.Quit();
//is there a touch on the screen?
if(Input.touches.Length <= 0)
{
//if no touches execute this code
}
else //if there is a touch
{
//loop through all the touches on screen
for(int i = 0; i < Input.touchCount; i++ )
{
//executes this code for the currunt touch ( i )on screen
if(this.guiTexture.HitTest(Input.GetTouch(i).position))
{
//if current touch hits our texture, run this code
Application.LoadLevel(0);
}
}
}
}
}
Answer by DaveA · Aug 13, 2013 at 04:44 PM
You can also use 'switch':
switch (buttonTag)
{
case "01":
Application.LoadLevel ("first level");
break;
case "second":
Application.LoadLevel ("nextlevel");
break;
}
But you can also see where this gets repetitive. If the scenes are named the same as the button tag, you could just:
Application.LoadLevel(buttonTag);
Answer by Joyrider · Aug 13, 2013 at 04:26 PM
If the actions for each button are similar, I'd use a for-loop, with an if-statement for detection, and an array for button related info (buttonObject, levelToLoad, etc.)
Something like this:
public struct stButtonData
{
public GameObject obj;
public int levelToLoad;
//...
};
public stButtonData[] buttonDataArray;
private stButtonData buttonData;
...
void Update()
{
...
for(int b=0; b<buttonDataArray.Length;b++)
{
buttonData = buttonDataArray[b];
for(int t = 0; t < Input.touchCount; t++ )
{
if(buttonData.obj.guiTexture.HitTest(Input.GetTouch(t).position))
{
Application.LoadLevel(buttonData.levelToLoad);
}
}
}
...
}