← Unity C#

LESSON / ARTICLE

条件分岐と繰り返し

if・switchによる条件分岐とfor・whileによる繰り返しを学びます。

条件分岐と繰り返し

条件分岐は状態に応じて処理を選ぶ仕組み、繰り返しは同じ処理を複数回実行する仕組みです。ゲームのクリア判定、残り体力の表示、アイテム一覧の処理などに使います。

if文

int hp = 25;

if (hp <= 0)
{
    Console.WriteLine("Game Over");
}
else if (hp < 30)
{
    Console.WriteLine("Danger");
}
else
{
    Console.WriteLine("Normal");
}

hpは25なので、最初の条件hp <= 0はfalse、次のhp < 30はtrueです。そのためDangerだけが出力されます。ifとelse ifは上から順番に評価され、最初に成立した分岐の処理が実行されます。

主な比較演算子は==(等しい)、!=(異なる)、<、>、<=、>=です。条件を組み合わせる&&はAND、||はORを表します。

switch

複数の決まった値に応じて分岐するときはswitchが便利です。

int itemType = 2;

switch (itemType)
{
    case 1:
        Console.WriteLine("Potion");
        break;
    case 2:
        Console.WriteLine("Key");
        break;
    default:
        Console.WriteLine("Unknown");
        break;
}

itemTypeは2なのでKeyが出力されます。breakはそのcaseの処理を終えてswitch文の外へ抜けるために使います。どのcaseにも一致しない場合はdefaultが実行されます。

for文

回数や範囲が決まっている繰り返しにはforを使います。

for (int i = 0; i < 3; i++)
{
    Console.WriteLine(i);
}

出力は0、1、2の3行です。初期化のint i = 0は最初に一度だけ実行され、i < 3がtrueの間は本体を実行し、i++でiを1増やします。iが3になると条件がfalseになり終了します。

while文

条件が成立している間繰り返す場合はwhileを使います。

int count = 3;
while (count > 0)
{
    Console.WriteLine(count);
    count--;
}

出力は3、2、1です。count--で毎回値を1減らすため、いずれ条件がfalseになります。繰り返しの中で終了条件に近づく更新を忘れると、無限ループになる可能性があります。

Unityでの利用例

using UnityEngine;

public class HpMessage : MonoBehaviour
{
    [SerializeField] private int hp = 25;

    void Start()
    {
        if (hp <= 0)
            Debug.Log("Game Over");
        else if (hp < 30)
            Debug.Log("Danger");
        else
            Debug.Log("Normal");
    }
}

この例ではゲーム開始時の体力に応じてログを出します。実際のゲームでは、ダメージを受けたタイミングや体力が変化したタイミングで判定する設計もよく使われます。

よくある間違い

  • 比較に=を使う。等しいかの比較は==です。
  • ifの条件式でbool以外の値をそのまま使う。C#では条件式はboolである必要があります。
  • forの終了条件を誤り、回数が1回多い・少ない。
  • while内で条件に関係する値を更新せず、無限ループになる。
  • switchのcaseでbreakなどの終了処理を忘れる。

この章の要点

ifとswitchは条件に応じて処理を選び、forとwhileは処理を繰り返します。条件式がいつ成立し、いつ成立しなくなるかを追うことが、意図した動作を理解する鍵です。次章では処理をメソッドにまとめ、クラスでデータと処理を整理します。