メインコンテンツまでスキップ

Coroutine

コルーチンを使った順次処理について説明します。

コルーチンとは?

コルーチンは、Unityでの特殊なメソッドの一種で、通常のメソッドとは異なり、処理を中断・再開することができます。これにより、時間経過に伴う処理や、他の処理と並行して実行される処理を簡単に記述できます。

基本的なコルーチンの使い方

以下は、コルーチンを使って順次処理を行う基本的な例です。

using UnityEngine;
using System.Collections;

public class CoroutineExample : MonoBehaviour
{
void Start()
{
// コルーチンの開始
StartCoroutine(Sequence());
}

// コルーチンメソッド
IEnumerator Sequence()
{
Debug.Log("First step");
// 2秒待機
yield return new WaitForSeconds(2f);

Debug.Log("Second step");
// 3秒待機
yield return new WaitForSeconds(3f);

Debug.Log("Third step");
}
}

この例では、Start() メソッドで Sequence() コルーチンを開始しています。Sequence() メソッド内で、WaitForSeconds を使って2秒と3秒の待機を挟みながら処理が順次実行されています。

引数を使ったコルーチン

コルーチンは引数を受け取ることもできます。たとえば、次のようにコルーチンに引数を渡すことができます。

using UnityEngine;
using System.Collections;

public class CoroutineWithParameters : MonoBehaviour
{
void Start()
{
// コルーチンの開始
StartCoroutine(Sequence("Start", 2f, "End", 3f));
}

// 引数付きのコルーチンメソッド
IEnumerator Sequence(string firstMessage, float firstDelay, string secondMessage, float secondDelay)
{
Debug.Log(firstMessage);
yield return new WaitForSeconds(firstDelay);

Debug.Log(secondMessage);
yield return new WaitForSeconds(secondDelay);

Debug.Log("Final step");
}
}

この例では、Sequence コルーチンに複数の引数を渡しています。これにより、処理内容を動的に変更することができます。

コルーチンを使った順次処理の応用

複数のコルーチンを組み合わせて、複雑な順次処理を実現することも可能です。また、コルーチンをネストして実行することで、特定の条件が満たされたときに次の処理に進むといった柔軟な制御も行えます。

以下は、条件に応じて処理を進める例です。

using UnityEngine;
using System.Collections;

public class ConditionalCoroutine : MonoBehaviour
{
void Start()
{
StartCoroutine(Sequence());
}

IEnumerator Sequence()
{
Debug.Log("First step");
yield return new WaitForSeconds(1f);

// 特定の条件を満たすまで待機
yield return StartCoroutine(WaitForCondition());

Debug.Log("Second step");
}

IEnumerator WaitForCondition()
{
while (true)
{
if (/* 条件 */)
{
break;
}
yield return null; // 次のフレームまで待機
}
}
}

この例では、WaitForCondition() コルーチンが特定の条件を満たすまで待機し、その後に次のステップに進みます。

コルーチンを使うことで、順次処理を柔軟に管理することができ、特に時間依存の処理や並行処理が必要な場面で非常に有効です。