【Unity】コルーチンを複数実行する

Unityにおいて、複数のコルーチンを実行するには、以下の方法があります。

実行サンプル

同時に複数のコルーチンを開始するには、StartCoroutineを使用します。たとえば、以下のように、3つのコルーチンを同時に開始することができます。

void Start()
{
    StartCoroutine(Coroutine1());
    StartCoroutine(Coroutine2());
    StartCoroutine(Coroutine3());
}

コルーチンの実行中に別のコルーチンを開始するには、StartCoroutineを使用して、新しいコルーチンを開始することができます。以下のように、Coroutine1の実行中にCoroutine2を開始することができます。

IEnumerator Coroutine1()
{
    Debug.Log("Coroutine1 started.");
    yield return StartCoroutine(Coroutine2());
    Debug.Log("Coroutine1 finished.");
}

IEnumerator Coroutine2()
{
    Debug.Log("Coroutine2 started.");
    yield return new WaitForSeconds(2);
    Debug.Log("Coroutine2 finished.");
}

複数のコルーチンを同時に実行するために、StartCoroutineを使用して、複数のコルーチンを開始し、それらを一つのコルーチンでまとめることもできます。以下の例では、3つのコルーチンを同時に開始し、それらがすべて完了するまで待機するコルーチンを示しています。

IEnumerator MultipleCoroutines()
{
    yield return StartCoroutine(Coroutine1());
    yield return StartCoroutine(Coroutine2());
    yield return StartCoroutine(Coroutine3());
    Debug.Log("All coroutines finished.");
}

以上の方法を使用して、Unityで複数のコルーチンを実行することができます。

全てのコルーチンを止めるには

Unityで全てのコルーチンを停止するには、StopAllCoroutinesメソッドを使用します。このメソッドは、現在実行中の全てのコルーチンを停止します。

以下は、StopAllCoroutinesを使用して全てのコルーチンを停止する例です。

using UnityEngine;

public class Example : MonoBehaviour
{
    private IEnumerator Coroutine1()
    {
        while (true)
        {
            Debug.Log("Coroutine1 is running.");
            yield return null;
        }
    }

    private IEnumerator Coroutine2()
    {
        while (true)
        {
            Debug.Log("Coroutine2 is running.");
            yield return null;
        }
    }

    private void Start()
    {
        StartCoroutine(Coroutine1());
        StartCoroutine(Coroutine2());
    }

    private void StopAllCoroutinesButtonOnClick()
    {
        StopAllCoroutines();
    }
}

この例では、StartメソッドでCoroutine1とCoroutine2を開始し、StopAllCoroutinesButtonOnClickメソッドで全てのコルーチンを停止することができます。StopAllCoroutinesを呼び出すと、Coroutine1とCoroutine2が停止し、ログ出力も停止します。

Unity,コルーチン

Posted by hidepon