【Unity】while文で条件がtrueの間だけ反復する処理を作れる!

while文 Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「while文ってなに?」

「while文はどうやって使うの?」

というお悩みの方に向けた内容となっています。

Unityで使うC#では、何度も繰り返す処理を作る際に、while文というものを使います。

このwhile文とは、条件を指定してその条件がture(真)の間だけ、中に書いた処理を繰り返すということを行います。

繰り返す回数を指定する場合はfor文の方が使いやすいですが、繰り返す回数が決まっていないような場合はwhile文が使えます。

そこで、このページでは、UnityのC#で使えるwhile文について、どういうものなのか、また使い方までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

while文とは?

まずは、while文がどういうものなのか紹介していきます。

条件式がtrueの間だけ指定した処理を繰り返す役割

while文とは、条件式を指定してその条件がtrue(真)の間だけ処理を繰り返すことができる構文です。

例えば、持っている所持金1,000円を全部使って、30円の薬草を買うという処理を考えてみます。

所持金が30円を下回ったら薬草が買えなくなるため、条件として所持金が30円以上の場合にだけ薬草を買うという処理を繰り返すことになります。

このように条件を指定して処理を繰り返すような時に、while文を活用することができます。

繰り返す回数が決まっていない時に使われる

while文は、基本的に処理を繰り返す回数が決まっていないような場合に使われます。

先ほどの薬草を買う例では、元の所持金が状況によって変わると、薬草を買える回数が変わるため、その処理を繰り返す回数も変わってきます。

  • 所持金が1,000円なら30円の薬草を33個購入 ⇒ 33回処理を繰り返す
  • 所持金が300円なら30円の薬草を10個購入 ⇒ 10回処理を繰り返す

このように、初めから処理を繰り返す回数が分からない場合に使うのがwhile文です。

ちなみに、while文と同様に、繰り返しの処理を行える構文としてfor文というものがあります。

このfor文は、ループ変数を使って処理を繰り返す回数を指定して使うことになるので、初めから処理を繰り返す回数が決まっている場合に使います。

while文の使い方

ここからは、while文の使い方について紹介していきます。

while文の記述方法

while文を使う場合は、以下のように記述して使います。

while(条件文)
{
	// 繰り返す処理を記述 //
}

上記のように、whileの後ろで条件を指定してあげることで、その条件がtrueの間だけ中に書いた処理が繰り返されることになります。

なお、注意点として、条件が常にtrueの状態になると、処理が無限ループされてしまいUnityが固まってしまうので注意しておきましょう。

そのため、処理を繰り返したときにちゃんと条件がfalseになるのを確認するか、もしくはbreak文を使って強制的にループ処理を止める必要があります。

また、他にもcontinue文を使って特定の場合に処理をスキップすることもできます。

Unity上で反復した処理を行う

実際に、Unity上でwhile文を使った反復処理を作ってみます。

例でも紹介しましたが、ここでは所持金を200円持っていて、全ての金額を使い30円の薬草を買うという簡単な処理を繰り返してみます。

空のオブジェクトを作成して、以下のスクリプトをアタッチしておきます。

using UnityEngine;

public class Test : MonoBehaviour
{
    int money = 200;    // 所持金額
    int price = 30;     // 薬草の価格

    void Start()
    {
        while (money >= price)  // 所持金が薬草の価格よりも多い場合
        {
            BuyHerb();  // 薬草を購入する処理
        }
    }

    void BuyHerb()
    {
        Debug.Log("薬草を買った!");
        money -= price; // 所持金から薬草の価格を引く
    }
}

Startメソッドの中の10行目でwhile文を記述して、所持金が薬草よりも多いかどうかを条件で指定しています。

そして、12行目で条件がtrueの際はBuyHerbというメソッドの処理を繰り返すようにしています。

BuyHerbメソッドの中では、19行目で所持金から薬草の価格を引くように処理をおこなっています。

これでゲームを実行してみると、

薬草を買った処理が6回繰り返されて、所持金が薬草を買えなくなったら処理が終了しています。

まとめ

このページでは、UnityのC#で使えるwhileという構文について、どんな仕組みなのか、使い方までをまとめていきましたが、いかがでしたでしょうか?

while文とは、指定した条件がtrueの間だけ記述した処理を繰り返すことができるループ構文の一つです。

ループ処理を作るのによく使うfor文と比較して、while文は繰り返す回数が決まっていない処理を作る際に使われることがあります。

ただし、while文は条件指定次第で無限ループとなってしまい、Unityのフリーズする原因となりますので、注意して使うようにしましょう。

最後までお読みいただきまして、ありがとうございました!

コメント