【Unity】continue文とは?ループ処理をスキップする役割

continue文とは? Unity

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

このページでは、

「continue文ってなに?」

「continue文はどういう時に使うの?」

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

UnityのC#では、ループ処理を作る際にcontinue文を使うことがあります。

このcontinue文とは、スクリプトでfor文などを使って繰り返す処理を作る際に、処理をスキップすることができる記述方法です。

例えば、for文で10回繰り返す処理を作った際、continue文を使うことで、3回目の処理は行わずにスキップさせるということができるようになります。

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

この記事を書いた人

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

continue文とは?for文などのループ処理をスキップできる

continue文とは、for文などのループ処理を行う際に使うもので、特定の条件の際にその処理をスキップするために使います。

そもそもfor文とは、処理を何度も繰り返して行うことができるもので、ループ変数を使って繰り返す回数などを指定して使うことができる記述方法です。

このfor文を使う際に、処理の中でcontinue文を記述すると、そのcontinueよりも後に書かれているループ処理が行われなくなり、スキップされるようになります。

そして、スキップされた後は、ループ変数が更新されて、次のループ処理に進みます。

なお、for文以外にも、同じくループ処理として使われるwhile文でも、同様にcontinueを使ってスキップ処理を行うことができます。

continue文の使い方

次に、continue文の使い方について紹介していきます。

if文で特定の条件下で「continue」を記述して使う

continue文を使う際は、for文およびwhile文などのループ処理の中で、if文で条件を指定し

continue;

と記述して使います。

例えば、for文で5回繰り返す処理を作り、その中の2回目の処理だけをスキップしたいような場合、以下のようにスクリプトで記述していきます。

for (int i = 0; i < 5; i++)
{
	if (i == 1)
	{
		continue;	// ループ処理をスキップ
	}

	Debug.Log(i);
}

5行目でループ変数が「1」の時だけ、continue文によってスキップされる処理が行われます。

なお、ループ変数は「0」から始めているので、2回目は「1」になります。

これをStartメソッド内などに記述して実行してみると、

ループ変数が1の時にだけ、ループ内に記述した処理(コンソールに表示させる処理)が行われずにスキップされているのが分かります。

特定の値の時だけcontinueでスキップする処理

今度は、配列を使って値を更新するループ処理を作り、特定の値の時だけcontinueでスキップさせて値を更新させないようにしてみます。

using UnityEngine;

public class Test : MonoBehaviour
{
    int[] num = { 10, 8, 13, 3, 2, 12, 18}; // 配列を作成する

    void Start()
    {
        for (int i = 0; i < num.Length; i++)
        {
            // 2倍にした数が20を超える場合
            if (num[i] * 2 >= 20)
            {
                continue;   // スキップする処理
            }

            num[i] *= 2;    // 値を2倍にする処理
        }

        // 配列の値をコンソールウィンドウに表示させる処理
        for (int i = 0;i < num.Length; i++)
        {
            Debug.Log(num[i]);
        }
    }
}

まず、5行目でint型の配列を作り、それぞれ値を入れています。

そして、for文を使って中のリストにある値を2倍にして、リストを更新させる処理を17行目で行っています。

ただし、その前の14行目で2倍にした値が20以上になってしまう場合は、「continue」でスキップするようにしています。

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

配列のそれぞれの値が更新されていますが、20以上の値になるものは更新処理が行われずそのままの値にすることができました。

まとめ

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

continue文は、for文やwhile文などのループされた処理をスキップすることができるもので、if文とともに使われます。

ループ処理の中で「continue;」と書いてあげることで、特定の条件の場合はそのループ処理をスキップして、次のループ処理に移ることができます。

例えば、特定の値以上になってしまうような場合に、continueを使うことでスキップしてループ処理をさせないといったことが作れるようになります。

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

コメント