本日は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文の書き方を知らなかったため今回とても勉強になりました。