これまでに書いてきたプログラムは上から順番に実行される単純なものでした。ここでは、複雑な処理をするために必要な条件分岐について学びます。
Unityプログラミング講座一覧はこちら
条件分岐
条件分岐とは、条件によって処理を変えることを言います。もし、条件分岐のないプログラムは最初から最後まで順番に実行するだけの一本道の処理になってしまいますので、ゲームに限らずプログラムでは必須の処理といってもいいでしょう。
if文
if文を用いることで、条件が満たされた場合にのみ処理を行うことができます。if文は以下のように書きます。
if (条件) 処理;
条件はtrue(真:合っている)かfalse(偽:間違っている)のどちらかを表すbool型の値を使用します。例えば、変数の値が5より大きいときに文字列を表示するプログラムは次のようになります。
using UnityEngine;
class Test : MonoBehaviour
{
public int number; // インスペクターで変更できるようにする
void Start()
{
// 5より大きいときに文字列を表示する
if (number > 5) Debug.Log("5より大きいです");
}
}
※前にも述べたように、コンポーネントとスクリプトのファイル名は同じにしてください。
このコンポーネントをゲームオブジェクトにアタッチして実行してみましょう。変数number
の値を変えてみて5より大きいときにのみ処理が実行されることを確認してください。
複数の条件を調べたいときには、論理積&&
や論理和||
が使えます。&&
は条件が両方ともtrueの場合にtrueになり、論理和||
はどちらか一方でもtrueであればtrueになります。
using UnityEngine;
class Test : MonoBehaviour
{
public int number;
void Start()
{
if (number > 5 && number < 10) Debug.Log("5より大きく10より小さいです");
if (number > 5 || number <= 0) Debug.Log("5より大きい、または、0以下です");
}
}
複数の処理
条件が満たされたときに複数の処理を行いたい場合には、処理を{}
で囲みます。
例えば、値が5よりも大きいときに、その値と「5より大きいです」の2つを表示するプログラムは次のようになります。
using UnityEngine;
class Test : MonoBehaviour
{
public int number;
void Start()
{
if (number > 5)
{
// 5より大きいときに2つの処理を実行する
Debug.Log(number);
Debug.Log("5より大きいです");
}
}
}
偽の場合の処理
条件に一致する場合の処理はif
文で書けました。一致しなかった場合の処理を書く場合はelse
文をif
と同時に使用することで実現できます。else
はif
文を書いた直後に使用します。
using UnityEngine;
class Test : MonoBehaviour
{
public int number;
void Start()
{
if (number > 5)
{
Debug.Log("5より大きいです");
}
else
{
// 条件を満たさなかった場合の処理
Debug.Log("5以下です");
}
}
}
3つ以上の場合分け
値によって3つ以上に場合分けをして処理をしたい場合にはelseとifを続けて書くことができます。
using UnityEngine;
class Test : MonoBehaviour
{
public int number;
void Start()
{
if (number > 5)
{
Debug.Log("5より大きいです");
}
else if (number >= 0)
{
Debug.Log("5よりは小さいですが、0以上です");
}
else
{
Debug.Log("マイナスです");
}
}
}
まとめ
この記事では、条件分岐ifを学びました。条件によって処理を変えるのはゲームにおいては必須です。ボタンを押したらプレイヤーがジャンプしたり、矢印キーで移動する機能は条件分岐を書かなければ実現困難です。次回はif文を使用して、プレイヤーのキー入力によって処理を変えてみます。
Unityプログラミング講座一覧はこちら