Unityでゲームを作る際に、同じ処理を繰り返し行う場面は多くあります。その際に役立つのがループ処理です。ループを活用することで、コードを効率的に書くことができ、可読性も向上します。
C#には主に以下の3つのループが用意されています。
- forループ: 回数が決まっている場合に使う
- whileループ: 条件を満たす間、処理を繰り返す
- foreachループ: 配列やリストの要素を順番に処理する
本記事では、これらのループの基本的な使い方を初心者向けに解説します。最後には実践的な演習問題も用意しているので、ぜひ挑戦してみてください!
ループ処理の基本概念
プログラミングにおいて「ループ」とは、ある処理を繰り返し実行する構文のことです。特にUnityでゲームの動作やエフェクト、ステージ内の複数オブジェクトの管理など、同じ処理を多数回行いたい場合に非常に役立ちます。
ループ処理を使うことで、コードの冗長性が減り、保守性や可読性も向上します。
C#には主に以下のループ処理が用意されています。
- forループ:回数が決まっている場合に使う。変数の初期化、条件式、変数の更新を1行で記述できるため、シンプルな繰り返し処理に最適です。
- whileループ:ある条件が真である間、処理を繰り返す。条件判定が先に行われるため、条件次第で何回も繰り返すか決まります。
- foreachループ:配列やリストなどのコレクションの各要素を順番に取り出して処理を行う。インデックスを使用せずに直感的に各要素へアクセスできるため、初心者でも使いやすいです。
forループ
forループとは?
forループは、ループの回数が明確な場合に最適な構文です。
例えば、画面上に10個の敵キャラクターを生成する場合や、配列の全要素に対して処理を行いたい場合など、決まった回数だけ処理を実行するシーンで利用します。
forループの基本構文
for (初期化; 条件; 増減)
{
// 繰り返したい処理
}
各要素の意味
- 初期化: ループのカウンター(変数)を初期化
- 条件: ループを続ける条件(trueなら実行)
- 増減: カウンターを増やしたり減らしたりする処理
forループのコード例
例えば、0から4までの数字を表示する簡単なコードは次のようになります。
using UnityEngine;
public class ForLoopExample : MonoBehaviour
{
void Start()
{
for (int i = 0; i < 5; i++) // 0から4まで5回ループ
{
Debug.Log("カウント: " + i);
}
}
}
このコードは、i の値を0から始め、i < 10 の条件が成立している間に i を1ずつ増加させながらループを実行します。最終的に、コンソールには0~4の数字が順番に表示されます。
実行結果
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
forループの応用例
forループは単純な繰り返しだけでなく、複雑な処理にも応用できます。
たとえば、2次元配列の各要素にアクセスする場合や、特定の条件下でのみ処理を実行する場合に、ループ内で条件分岐を取り入れることで柔軟な処理が可能です。
whileループ
whileループとは?
whileループは、特定の条件が満たされている間、処理を繰り返すループです。
回数があらかじめ決まっていない場合や、ユーザーからの入力を待つなど、条件次第でループ回数が変わる場合に適しています。
whileループの基本構文
while (条件)
{
// 繰り返したい処理
}
ポイント
- 条件がtrueである間は繰り返し処理が行われる
- 条件がfalseにならないと無限ループになるので注意!
whileループの例
using UnityEngine;
public class WhileLoopExample : MonoBehaviour
{
void Start()
{
int count = 0;
while (count < 5) // countが5未満の間ループ
{
Debug.Log("カウント: " + count);
count++; // 変数を増やさないと無限ループになる
}
}
}
実行結果
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
foreachループ
foreachループとは?
foreachループは、配列やリスト、その他のコレクションの各要素を自動的に反復処理するための構文です。
特に、要素のインデックスに依存せずに全体を処理したい場合に便利です。
foreachループの基本構文
foreach (型 変数名 in コレクション)
{
// 変数名を使って処理を実行
}
ポイント
- 配列やリストの要素を順番に取り出せる
- インデックスを使わなくても良いので、可読性が向上する
foreachループの例
using UnityEngine;
public class ForeachLoopExample : MonoBehaviour
{
void Start()
{
string[] fruits = { "りんご", "バナナ", "みかん" };
foreach (string fruit in fruits)
{
Debug.Log("フルーツ: " + fruit);
}
}
}
実行結果
フルーツ: りんご
フルーツ: バナナ
フルーツ: みかん
ループ処理の使い分け
ループの種類 | 使う場面 |
---|---|
for | 回数が決まっている場合 |
while | 特定の条件が満たされている間 |
foreach | 配列やリストの全要素を処理する |
演習問題
問題1: forループ
1から10までの整数を表示するforループを書いてください。
問題2: whileループ
1から100までの偶数だけを表示するwhileループを書いてください。
問題3: foreachループ
以下の配列をforeachループを使ってすべて表示してください。
string[] animals = { "犬", "猫", "うさぎ", "鳥" };
解答例
解答1: forループ
using UnityEngine;
public class ForLoopExercise : MonoBehaviour
{
void Start()
{
for (int i = 1; i <= 10; i++)
{
Debug.Log(i);
}
}
}
解答2: whileループ
using UnityEngine;
public class WhileLoopExercise : MonoBehaviour
{
void Start()
{
int num = 2;
while (num <= 100)
{
Debug.Log(num);
num += 2;
}
}
}
解答3: foreachループ
using UnityEngine;
public class ForeachLoopExercise : MonoBehaviour
{
void Start()
{
string[] animals = { "犬", "猫", "うさぎ", "鳥" };
foreach (string animal in animals)
{
Debug.Log("動物: " + animal);
}
}
}
まとめ
- forループは決まった回数の処理に適している
- whileループは条件を満たす限り処理を続ける
- foreachループは配列やリストの全要素を処理するのに便利
ループを活用すれば、無駄なコードを減らし、スマートなプログラムが書けます。ぜひUnityの開発で活用してみてください!