Switch Statement Gives Error PLEASE HELP!!!
I'm trying to make a switch statement to make it switch between scenes but I don't know what is wrong. using UnityEngine; using System.Collections;
 public class SwitchScenes : MonoBehaviour {
 
     public enum scenes {classic, arcade, selection};
 
     void Update () {
         if (Input.GetKeyDown (KeyCode.Mouse0)) {
             switch (scenes) {
             case scenes.arcade:
                 Application.LoadLevel("Arcade");
                 break;
             case scenes.classic:
                 Application.LoadLevel("Classic");
                 break;
             case scenes.selection:
                 Application.LoadLevel("Selection");
                 break;
             }
         }
     }
 }
Anything wrong with this? And yes all of these scenes exist in the Build Settings.
Answer by EmHuynh · Feb 14, 2016 at 07:18 PM
Hi, @Dudicus. The error is caused by your switch statement: switch( scenes ) scenes is being used as a variable when it's an enum. To resolve it, declare a scenes variable and use in your switch statement. Also, Application.LoadLevel is obsolete. Use SceneManager.LoadScene instead (you will need this line of code: using UnityEngine.SceneManagement;) Thanks for asking, let us know if you have more questions!
Here's the fixed version of your script:
 using UnityEngine;
 using System.Collections;
 using UnityEngine.SceneManagement;                       // For SceneManager.Load
 public class SwitchScenes : MonoBehaviour
 {
     public enum scenes { classic, arcade, selection };
     public scenes myScene;                               // Declare a scenes variable to be used
                                                          // in the switch statement below.
 
     void Update()
     {
         if (Input.GetKeyDown( KeyCode.Mouse0 ) )
         {
             switch( myScene )                            // Check myScene
             {
                 case scenes.arcade:
                     SceneManager.LoadScene( "Arcade" ); // Used SceneManager.LoadScene instead
                                                         // of Application.LoadLevel
                     break;
                 case scenes.classic:
                     SceneManager.LoadScene( "Classic" );
                     break;
                 case scenes.selection:
                     SceneManager.LoadScene( "Selection" );
                     break;
             }
         }
     }
 }
Let me know if there are any improvements that I should make within my script, so I can learn from it.
Answer by Dudicus · Feb 15, 2016 at 03:18 PM
Oh, that works! Thanks! I'm not very good at switch statements and this is the first time I wrote one.
Your answer
 
 
             Follow this Question
Related Questions
one default and 2 random answers. 0 Answers
Having an issue with using an Enum and using a string variable 0 Answers
Switch Case help 0 Answers
Switching out GameObject with Prefab? 2 Answers
Refactoring Nested Switch Statements 0 Answers
