C#
If
Unity
switch
VSCode

プログラム超初心者メモ Switch文

https://unity3d.com/jp/learn/tutorials/topics/scripting/switch-statements

Switch文とif文の比較
Unity Mac VScode 利用でのテスト

以下テストコード丸ごと

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class _Switch : MonoBehaviour {
    public int State=0;
    public enum MyState{Wait,Run,Sleep};
    private MyState e_MyState;

    // Use this for initialization
    void Start () {
        //本来はUpdateに書いた方が良さそうな内容だが、プリントがやたら出るのでStartにてテスト
        //------------------------------
        //スイッチ文のサンプル
        //条件には、string型,float型などは使えない。
        //intとenumが使える。
        //int を直接数値で使う場合は状態のイメージがわかないので、
        //書いてみると、レベルやhpなど数値で分かるものを利用すべきだと思った。
        switch (State)
        {
        case 1:
            print (State);
             //breakは無いと VSCode上でエラーが出る。役目はスイッチ文からの脱出
             //原語や環境によっては、break必須ではなさそう。
            break;
            //breakの下に命令を書いても意味がないし、これもVSCode上でエラーが出る。
        case 2:
            print (State);
            break;
        case 3:
            print (State);
            break;
        //default は書かなくても動く elseと同じ役割
        default:          
            print (State);
            break;
        }
        //------------------------------
        //上のスイッチ文と同じ結果になるif文
        if(State==0){print (State);}
        else if(State==1){print (State);}
        else if(State==3){print (State);}
        else{print (State);}
        //必ずしもif文が長くなる訳では無いことが・・・・分かるなぁ・・・
        //特に複雑な条件で分岐させるには if文が強そう。
        //------------------------------
        //なるほど enum と相性が良さそう!
        //状態を分けるのはif文を利用して、その後の処理はSwitch文を利用するのが良さそう。
        switch (e_MyState)
        {
        case MyState.Wait:
            print (e_MyState);  
            break;
        case MyState.Run:
            print (e_MyState);
            break;
        case MyState.Sleep:
            print (e_MyState);
            break;
        default:          
            print (e_MyState);
            break;
        }
    }
}