『Unity C#基礎』第五回: 繰り返し処理 - for文とwhile文
今回は、プログラムの中で同じ処理を繰り返すための繰り返し処理について学びます。ゲーム開発において、繰り返し処理は、敵キャラクターの動き、リソースの管理、複数のオブジェクトの処理など、さまざまな場面で重要な役割を果たします。C#では、for文とwhile文という2つの主要な繰り返し文を使って繰り返し処理を実現します。
for文とは?
for文は、特定の回数だけ繰り返す処理を行う際に使われます。例えば、敵キャラクターを10体生成したり、スコアを100回更新したりする際に便利です。
基本的な構文:
for (初期化; 条件; 更新)
{
// 繰り返す処理
}
初期化: 繰り返し処理が始まる前に一度だけ実行される処理です(例: int i = 0;)。
条件: この条件がtrueである限り、処理が繰り返されます(例: i < 10;)。
更新: 繰り返しが1回終わるごとに実行されます(例: i++)。
例:
for (int i = 0; i < 5; i++)
{
Debug.Log("i の値は: " + i);
}
この例では、iが0から4までの間、計5回ループが実行されます。コンソールにはiの値が順に表示されます。
while文とは?
while文は、条件がtrueである限り、処理を繰り返す構文です。何回繰り返すかがあらかじめ決まっていない場合や、特定の条件が満たされるまで処理を続けたい場合に使います。
基本的な構文:
while (条件)
{
// 繰り返す処理
}
例:
int count = 0;
while (count < 5)
{
Debug.Log("count の値は: " + count);
count++;
}
この例では、countが5未満である限り、countの値をコンソールに表示します。count++によってcountは1ずつ増加し、最終的に条件がfalseになるとループが終了します。
do-while文
do-while文は、少なくとも1回は必ず処理を実行し、その後条件をチェックして、条件がtrueであればさらに処理を繰り返します。
基本的な構文:
do
{
// 繰り返す処理
} while (条件);
例:
int count = 0;
do
{
Debug.Log("count の値は: " + count);
count++;
} while (count < 5);
この場合も、countが5未満である限りループが続きます。ただし、doの中身は最初に1回必ず実行されます。
繰り返し処理の実用例
Unityのゲーム開発において繰り返し処理を使う具体例を紹介します。たとえば、ゲームに登場するアイテムを一定の間隔で生成する場合、for文やwhile文を活用できます。
例1: 敵キャラクターの生成
using UnityEngine;
public class EnemySpawner : MonoBehaviour
{
public GameObject enemyPrefab;
public int numberOfEnemies = 5;
void Start()
{
for (int i = 0; i < numberOfEnemies; i++)
{
Instantiate(enemyPrefab, new Vector3(i * 2.0f, 0, 0), Quaternion.identity);
}
}
}
この例では、敵キャラクターを5体生成し、それぞれが2ユニット離れた場所に配置されます。for文を使うことで、簡単に複数の敵を同時に生成できます。
例2: 時間に基づく繰り返し処理
using UnityEngine;
public class Timer : MonoBehaviour
{
public float countdownTime = 10.0f;
void Update()
{
if (countdownTime > 0)
{
countdownTime -= Time.deltaTime;
Debug.Log("残り時間: " + countdownTime);
}
else
{
Debug.Log("タイムアップ!");
}
}
}
この例では、Update()メソッド内でcountdownTimeが0になるまで毎フレーム減少させます。while文の代わりにif文とUpdate()を組み合わせることで、リアルタイムで繰り返し処理が実行されます。
breakとcontinue
繰り返し処理の中で、ループを途中で終了させたい場合や、特定の条件をスキップしたい場合に使うのが、breakとcontinueです。
break: 繰り返し処理を即座に終了します。
continue: 現在のループをスキップし、次のループに進みます。
例:breakの使用
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break; // iが5になったらループを終了
}
Debug.Log("i の値は: " + i);
}
例:continueの使用
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
continue; // 偶数のときはスキップ
}
Debug.Log("i の値は: " + i);
}
まとめ
for文は、特定の回数繰り返す処理に適しています。
while文は、条件が満たされるまで繰り返す処理に使われます。
do-while文は、少なくとも1回は必ず処理を実行します。
breakとcontinueは、ループ内での流れを制御するために使われます。
次回は、配列とリストを使って複数のデータを管理する方法について学びます。これを使うことで、ゲーム内でのオブジェクトやデータの管理がさらに効率的になりますので、楽しみにしてください!