『if』文とは
条件により処理を分岐させたいときに使います。
もくじ
1.基本構文
2.構文パターン
3.具体例
4.Unityでの使用例【スマホでタッチを検知する】
基本構文
1 2 3 4 5 6 7 8 9 10 11 12 |
if (条件A) { // 実行A } else if (条件B) { // 実行B } else { // 実行C } |
※プログラミングは基本的に、すべて半角英数字で記述します。上記では便宜上全角を使用していることをご了承ください。
上から順に実行されます。
まず「条件A」が検証され、「条件A」を満たしていると、
「実行A」が実行され、処理が終わればif文が終了します。
「条件A」を満たさなければ、次の「条件B」が検証され、
「条件B」も満たさなければ、「else(それ以外)」の中に入り、
「実行C」が実行されます。
上から下へと順に検証されていき、条件を満たした段階で、
その中が実行され、if文が終了します。
「else」は、どの条件も満たさなかった場合に、実行される部分となり、
必要がなければ書かなくてもよいのですが、書く場合には、
必ず一番最後に書かなければなりません。
構文パターン
「if」文は以下のような書き方もできます。
「if」のみでも問題ありません。
「else-if」や「else」はなくても問題ありません。
1 2 3 4 |
if (条件A) { // 実行A } |
「else-if」はいくつあっても問題ありません。
「else」はなくても構いませんが、記述する場合には必ず最後に記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
if (条件A) { // 実行A } else if (条件B) { // 実行B } else if (条件C) { // 実行C } else { // 実行D } |
「else-if」だけがなくても問題ありません。
1 2 3 4 5 6 7 8 |
if (条件A) { // 実行A } else { // 実行B } |
if文の中が1行のみの場合には、「{ }」は省略できます。
1 2 3 4 |
if (条件A) // 実行A else // 実行B |
具体例
それでは具体例を見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
int num_1 = 10; int num_2 = 5; int ans = 0; if (num_1 > 10 && num_2 == 5) { ans = num_1 - num_2; } else if(num_1 == 10 || num_2 == 4) { ans = num_1 + num_2; } else { ans = num_2 - num_1; } Debug.Log(ans); |
&&:「AND」「かつ」, ||:「OR」「あるいは」, ==:「等しい」
Debug.Log(ans):UnityエディタのConsoleにansを出力する関数
上記コードで、最終的にConsoleに出力される数字は何でしょうか。
答えは、「15」です。
まず、1つ目の条件を見ていきましょう。
「num_1 > 10 && num_2 == 5」となっていますが、
「「num_1」が10より大きく、かつ「num_2」が5の場合」
という意味ですね。
「num_1」は10なので、条件を満たしていません。
なので、次の条件へと移ります。
では、2つ目の条件を見てみましょう。
「num_1 == 10 || num_2 == 4」となっていますが、
「「num_1」が10、あるいは「num_2」が4である場合」
という意味ですね。
「num_1」が10なので、条件を満たしています。
なので、その中の「ans = num_1 + num_2」が実行されます。
この実行部分は、ansに「num_1 + num_2」の結果を代入するという意味なので、
ansは15となり、最終的にansがconsoleに出力されるので、
「15」がconsoleに出力されることになります。
Unityでの使用例
スマホでの「タッチ」を検知するコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Began) { // 画面に指が触れたときの処理 } else if (touch.phase == TouchPhase.Stationary) { // 指が画面に触れているが動いたいないときの処理 } else if (touch.phase == TouchPhase.Moved) { // 画面上で指が動いたときの処理 } else if (touch.phase == TouchPhase.Ended) { // 画面から指が離れた時の処理 } } |
Input.touchCount:スマホでタッチ(タップ)された回数が格納されている
Input.GetTouch(0):座標などのタッチ情報を取得する関数
TouchPhase.Began:画面に指が触れたとき
TouchPhase.Moved;画面上で指が動いたとき
TouchPhase.Stationary:指が画面に触れているが動いていないとき
TouchPhase.Ended:画面から指が離れたとき
「Input.touchCount > 0」は、
「スマホのタッチ回数が0より大きい場合」という意味であり、
上記では「スマホのタッチ回数が0より大きければ、タッチ情報を取得する」
という処理が行われています。
タッチがされていなければInput.touchCountは0なので、
条件は満たされずif文は無視されます。
タッチ情報が取得された後、
今度はその取得したタッチ情報をもとに分岐が発生しています。
1つ目のif文では、タッチされたかどうかを検証して、
2つ目のif文では、タッチされた情報が何であるかで条件分岐させています。
上記コードをUpdate関数内に記述すれば、スマホのタッチを検知して、
いろいろな処理を行うことができます。