11. 繰り返し処理
11.1 whileループ
whileループを記述します。
void Start(){
int a = 0;
while(a < 5)
{
Debug.Log("aは" + a + "です");
++a;
}
}
以下はaがwhileのループ外で代入しており、常にtrueになり、無限ループになりUnityを強制終了するしかないので以下のような文は書かないようにしてください。
void Start(){
int a = 0;
bool b = a < 5;
while(b)
{
Debug.Log("aは" + a + "です");
++a;
}
}
以下のように書き直すと動きます。
void Start(){
int a = 0;
bool b = a < 5;
while(b)
{
Debug.Log("aは" + a + "です");
++a;
b = a < 5;
}
}
11.2 Updateメソッドとループ文の違い
Updateメソッドは毎フレーム呼ばれるメソッドです。ループ文は1フレーム内で完結する命令になります。以下のスクリプトを一旦以下のスクリプトをCubeにアタッチして実行してみると、期待した動きになりません。
void Start(){
int a = 0;
while(tranosform.position.x < 5){
Debug.Log("このCubeのx座標は" + transform.position.x + "です");
transform.position += Vector3.right;
}
}
11.3 breakとcontinue
continueを使うと、カッコ内の処理を中断し、whileの先頭に戻ることができます。breakを使うと、whileから抜け出す。breakを使うことで、無限ループを回避することができます。
void Start(){
int a = 0;
while(true){
++a;
if(a < 10){
continue;
}
Debug.Log(a);
break;
}
}
11.4 do〜while文
do〜while文は、whileのカッコ内にループを抜ける条件を書いて、doの範囲内で処理を行い、条件を満たしたらループを抜けます。
void Start(){
int a = 0;
do {
++a;
Debug.Log(a);
}while(a > 5)
}
11.5 for文
forループを記述します。
void Start(){
for(int i = 0; i < 5; ++i)
{
Debug.Log(i);
}
}
whileループで記述すると以下のようになります。
void Start(){
int i = 0;
while(i < 5){
Debug.Log(i);
++i;
}
}