UnityのC#のwhile文とfor文
UnityのC#のwhile文とfor文を使うことでループが可能となる。C#でのスクリプトの開き方、基本的な構文の作り方、変数、演算子がわからない場合は先に以下の記事で確認してほしい。
UnityのC#の書き方
UnityのC#の変数・演算子
if文とswitch文
また、Unityの基礎知識や操作などがわからない場合は先に以下の記事を確認してほしい。
Unityの基礎まとめ
この記事ではwhile文とfor文について詳しく解説していく。
UnityのC#のwhile文とfor文目次
while文ループを抜ける方法
do~while文
for文
目次にもどる
while文
while文はループ文の一つである。例文としては以下の通り。
Startメソッド内の記述
int roopa = 0;
while (roopa < 4)
{
++roopa;
Debug.Log("処理");
}
whileの後に書いてあるのはループ条件である。今回の場合、変数roopaが4より小さいなら処理が行われる。処理終了後には再度whileのループ条件が確認され、条件を満たすなら再度処理される(条件を満たさなくなったら処理されずループから抜ける)。
roopaには最初に0が代入されたが、whileの処理に入り、++roopa;によって値が+1されている。ループ4回目で値が4となり、次のループ条件確認で条件を満たさずループから抜けることができる。
このスクリプトをゲームオブジェクトにアタッチして再生した場合、ループを4回繰り返すことから、Debug.Logにより「処理」というログが4回流れることになる。
++やその他の演算子がわからない場合は以下の記事で紹介しているので、確認してみてほしい。
UnityのC#の変数・演算子
目次にもどる
ループを抜ける方法
ループ文を使う際に注意せねばならないのが無限ループである。起こすと処理が無限に行われ続け画面がフリーズしてしまう。変数の入れ方などを工夫して無限ループに陥らないようにプログラムを書くのも大事。ただループから抜ける方法もある。
例えば、breakを使うことでループから抜けることができる。
また、continueを使うことでここから下の処理を行わずループ処理に戻ることができる。
Startメソッド内の記述
int roopa = 0;
while (roopa < 4)
{
if (roopa < 2)
{
roopa += 1;
if (roopa > 0)
{
continue;
}
Debug.Log(roopa);
break;
}
else
{
roopa -= 4;
}
}
「break;」の記述があるが、もしこれがない場合は再生した場合に無限ループとなり、フリーズする。unityをタスクマネージャーで強制終了させるしかない。
なぜ、「break;」がない場合に無限ループになるかと言えば、最初はwhileの条件、if (roopa < 2)の条件を満たしてroopaの数字が1ずつ上がっていくが、roopaが2の状態ではelseの処理に行き、そこでroopaが4減らされてしまう。次にループするとまたifの処理となり無限ループとなる。
if (roopa > 0)の中に「continue;」の記述がある。4減らされその後1足されて-1になってはじめてcontinueされず下の処理が行われる(-1のログが出され、「break;」によりループを抜けられる)。
目次にもどる
do~while文
do~while文は先に処理を行い、その後にループするかどうかを決めるループ文だ。例えば以下のように使う。
Startメソッド内の記述
int loopb = 3;
do
{
loopb += 2;
Debug.Log(loopb);
}
while (loopb < 8);
まず、loopbに3が代入されてdoに入り2が加算され、それからwhileに入りループするかどうかが判断される。
5なのでループされ、再度doからの処理が行われ2が加算される。このように繰り返し、ログに5、7、9を出したところでwhileの条件から外れてループを抜けることになる。
目次にもどる
for文
for文はループするための変数、ループさせる条件、ループ時の処理をまとめて記述できるループ文だ。例えば以下のように使う。
Startメソッド内の記述
for (int i = 5; i > 3; i--)
{
Debug.Log(i);
}
forの後のint i = 5で変数を宣言しつつ5を代入。そして次のi > 3がループする条件、最後のi--(iの値を-1)がループ毎に行う処理となる(なぜか、for文は変数の名前にiを用いることが多いようだが、他の名前でも構わない)。
ループを2回行うとループから外れる。出るログは5、4となる。
どう処理されるかがわかりやすく、while文と比較しても使いやすい。使う頻度が高いループ文なのでぜひ覚えておきたい。