【Unity】for文とは?繰り返し処理を行う際に効率化できる

for文とは? Unity

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

このページでは、

「Unityで使えるfor文ってどういうものなのか知りたい。」

「for文の使い方がよく分からない。」

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

Unityで使うC#では、for文を使ってスクリプトを書いていくことができます。

このfor文とは、書いている処理を何度も繰り返すことができるもので、繰り返す回数を
指定できる
のが特徴です。

また、配列やリストなどのデータを扱う際に、for文を使うことで要素ごとに処理を行うということができるようになります。

そこで、このページでは、Unityで使うことができるfor文について、どんなことができるのか、また作り方や使い方についてまとめていきます。

この記事を書いた人

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

for文とは?

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

処理を何度も繰り返すことができる

for文とは、ゲーム内の処理を何度も繰り返すことができるC#の書き方になります。

例えば、攻撃の処理を3回繰り返したい場合、

Attack();
Attack();
Attack();

上記のようにfor文を使わない場合は、同じ内容を3回記述する必要があります。

これと同じことをfor文を使って書いた場合、

for (int i = 0; i < 3; i++)
{
	Attack();
}

攻撃の処理を書くのは一度だけですが、同じように3回処理を行うことができます。

このようにfor文を使って書くことで、処理を繰り返すことができます。

繰り返し回数を決める場合に使用する

for文のもう一つの特徴として、繰り返す回数を決めて処理を行うことができます。

C#では、この繰り返し処理を行う仕組みとして、for文だけでなくwhile文というものもあります。

どちらも処理を繰り返すのは同じですが、

という特徴があります。

そのため、for文を使う際は、基本的に繰り返す回数が決まっていて、その回数だけ処理を行いたい場合に使います。

for文の作り方・使い方

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

for文の書き方

for文を作る際の書き方として、

for (ループ変数の初期化; 条件式; ループ変数の更新)
{
	繰り返す処理;
}

と、書いていきます。

まずループ変数とは、繰り返す回数を定義するための変数で、一般的に「i」を使って記述します。

ループ変数の初期化で、int型の「i」を定義して数値を代入して初期化しておきます。

そして、ループ変数の条件式で指定した条件に合うまでは、for文内に書いた処理が繰り返されることになります。

また、繰り返されるたびにループ変数の更新に書いた計算式が行われて、ループ変数の値が変更されていくことになります。

その後、条件式に合わなくなるとfor文の処理が行われなくなるという仕組みになっています。

for文の使い方

for文の仕組みについて書きましたが、言葉だけだとややこしいので、ここからは実際に使い方について紹介していきます。

同じ処理を何回も繰り返す使い方

同じ処理を5回繰り返したいという場合は、

for (int i = 0; i < 5; i++)
{
	繰り返す処理;
}

と、書いてあげます。

i = 0から始まり、処理が行われるたびに1,2,3,4と増えていき、i = 5になると、条件式の「i < 5」に当てはまらなくなるので、処理が行われずにfor文から抜けることになります。

実際に以下のスクリプトを書いて試してみると、

using UnityEngine;

public class Test : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            for (int i = 0; i < 5; i++)
            {
                Attack();
            }
        }
    }

    void Attack()
    {
        Debug.Log("攻撃する!");
    }
}

スペースキーを押すと、5回ループ内の処理が行われているのが分かります。

変数の値によって処理を変える使い方

ここまでは、ただ処理を繰り返すだけでしたが、ループ変数の値によって処理を変えるといったこともできます。

例えば、以下のようなスクリプトを作ってみます。

using UnityEngine;

public class Test : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            for (int i = 5; i > 0; i--)
            {
                if (i == 4 || i == 3)
                {
                    Debug.Log(i + "番");
                }
                else
                {
                    Debug.Log("No." + i);
                }
            }
        }
    }
}

7行目でfor文を書いていて、ループ変数の初期値を5、繰り返す度に1ずつ減算して更新していき、0になるとfor文を抜けるという処理にしています。

さらに、for文の中でif文を使ってループ変数の値によって、処理内容を変更しています。

もしループ変数が4と3の時は、「●番」と表示するようにして、それ以外の時は「No.●」と表示するようにしています。

実際にこれで実行してみると、

と、ループ変数に合わせて処理内容を変更することができています。

まとめ

このページでは、Unityで使うことができるfor文について、どんな特徴があるのか、書き方や使い方までを紹介していきましたが、いかがでしたでしょうか?

for文は、処理を繰り返すことができる書き方で、ループ変数を定義して条件式に合う間、処理を繰り返すことができます。

for文を使うことで、何度も同じ処理を書く必要が無くなるので、非常に便利に使うことができます。

また、配列などの要素を取り出す際にも使えるので、for文は覚えておいたほうがよいでしょう。

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

コメント