本日はUnityC#枠です。
筆者はUnity歴は5年ほどになりますが、グラフィック側の興味が強いため積極的にC#を書いてはいませんでした。
今回は筆者のアプリ、Yubimozi HoloLensを開発する中でSwich文に関して新しい気づきがあったためまとめます。
〇Switch文
Switch文はC#で使用できる条件分岐処理の一つです。
条件分岐では一般的にif文が有名ですが、Switch文はif文に比べ条件によっては可読性や処理の面で優れています。
今回のYubimoziHoloLensアプリではキーボードの入力による指文字のアニメーションの処理でSwitch文を使用しています。
IEnumerator AnimatoinSwitch() { int _textsize= _TextList.Length;//入力した文字列の大きさ int i; for (i = 0; i < _textsize; i++)//文字列を一文字ずつ分割して、それぞれのアニメーションを実行 { string source = _TextList[i]; Debug.Log(source); _HandText.text = source; switch (source) { case "あ": case "ア": _anim.SetTrigger("A"); break; case "い": case "イ": _anim.SetTrigger("I"); break; case "う": case "ウ": _anim.SetTrigger("U"); break; case "え": case "エ": _anim.SetTrigger("E"); break; case "お": case "オ": _anim.SetTrigger("O"); break; ... } } }
コメントアウトで説明していますが、YubimoziHoloLensでは日本語の50を超えるかな文字列を一文字ずつ分割して、アニメーション処理をさせています。
上記のコードでは_TextListが入力した文字列になります。
上記の例の場合if文を使用すると
string source = _TextList[i]; if( source=="あ"| source = "ア"){ _anim.SetTrigger("A"); } if( source=="い"| source = "イ"){ _anim.SetTrigger("I"); }
と記述することになりますが、これではif文が大量に発生し、非常にみにくいコードになります。
Switch文は主に条件対象が複数ある場合(2つ以上)の場合特に使用されます。
switch (source)//条件式 { case "あ" ://sourceが"あ"の場合 _anim.SetTrigger("A"); break; ... }
またSwitch文ではif文同様複数の条件を与えることもできます。この場合は次のようにcaseを二重で記入します、
switch (source)//条件式 { case "あ" : case "ア"://sourceが"あ"もしくは"ア"の場合 _anim.SetTrigger("A"); break; ... }
筆者はこの複数条件のSwitch文の書き方を知らなかったため今回とても勉強になりました。