Unity入門 - C#スクリプトの文法③条件分岐(if文, switch文, ?演算子)-
Index
if文
if文は下記のような文のことです。
if(条件式){ //条件式がtrueならばここに入る, falseならば入らない }
if は日本語で ”もし~ならば" と訳されます。例えば "If I got up early, I could have written a blog" (もし早く起きたのなら、ブログが書けたのに)のような感じです。c#におけるif文も同じで、"条件式がtrueならば、if以下のスクリプトを実行する” というようになっています。
例えば、次のような文が作れます。
int a = 0; if(a == 0){ Debug.Log("a = 0 なので, a == 0 はtrue"); //trueなので上のログは表示される } if(a == 1){ Debug.Log("a = 1 ではないので, a == 1 は false"); //falseなので上のログは表示されない }
else if文、else文
if文を続けて書く場合、else if文、else文を用いたほうが簡潔に書ける場合があります。
if(条件式①){ //条件式①がtrueならばここに入る, falseならば入らない } else if(条件式②){ //条件式①がfalseで、条件式②がtrueならばここに入る } if(条件式③){ //条件式③がtrueならばここに入る } else{ //条件式③がfalseならばここに入る } if(条件式④){ //条件式④がtrueならばここに入る } else if(条件式⑤){ //条件式④がfalseで、条件式⑤がtrueならばここに入る } else{ //条件式④、⑤がどちらもfalseならばここに入る }
else は日本語では "そうでなければ、それ以外" のような訳され方をします。もし条件式が成り立てば、if文の中が実行され、そうでなkればelse文の中が実行されます。else文にも条件を付けたい場合は、else if文を使いましょう。
・具体例
int a = 0; //aの絶対値を取り、+1をする if(a < 0){ a *= -1; a += 1; } else{ a += 1; } //今回はa = 0のため, else文に入り、1足されるので、a = 1となる
?演算子
?演算子を用いて、if文を表記する方法があります。下記のように書きます。
条件 ? trueの場合 : falseの場合;
少し分かりづらいため、具体例を見てみましょう。
int a = -1; //a の絶対値を取る a > 0 ? Debug.Log("a > 0のため何もしない") : a *= -1; //a = -1のため、aに -1が掛けられ、a = 1となる
?の前に条件が書かれていること、コロン(:)の左右にtrueの場合、falseの場合の挙動が書かれていることを抑えておけばよいでしょう。
switch文
条件分岐の数が多くなった場合では、if文では不便かもしれません。その場合はswitch文を使うときれいなスクリプトが書けます。
switch(変数){ case 値①: //変数が値①である場合の処理 break; case 値②: //変数が値②である場合の処理 break; case 値③: //変数が値③である場合の処理 break; default: //caseで指定された以外の値の処理 break; }
変数の値がcaseのとなりに書かれた値と等しいときに、その下に書かれた処理をします。
- break:処理後にswitch文の外にでる
- default: どのcaseでもない場合の処理。なにも処理をしてほしくない場合は、break; だけ書く
・具体例
int i = 6; switch(変数){ case 1: Debug.Log("i = 1ではないため、ここは処理されないが、case 6から戻ってくる"); break; case 2: Debug.Log("i = 2ではないため、ここは処理されない"); break; case 6: Debug.Log("i = 6なので、ここの処理がされる"); goto case 1; break; default: Debug.Log("上のcaseが実行されたので、ここは処理されない"); break; }
上のスクリプトの中で goto case を使いました。caseの後に他のcaseの処理をする場合は goto case 値 を使いましょう。
switch文で使える変数
数値型、bool型、文字(char)型、列挙型(enum)、文字列(string)型です。
int である必要も数値である必要もありません。
最後に
条件分岐の方法として、if文、switch文をご紹介しました。次回は反復処理であるfor文やwhile文をご紹介します。よろしければぜひご覧ください。