[Unity] コルーチンがなぜか途中で停止するときの確認箇所

なんていうかあいつStartCoroutineしたGameObjectが非アクティブになったら停止するっぽい。

アクティブに戻しても再開しないっぽい。

エディタで適当に

public class RoopSample : MonoBehaviour {

    // Use this for initialization
    void Start () {
        StartCoroutine (SampleRoop ());
    }

    IEnumerator SampleRoop() {
        int count = 0;
        while (true) {
            count++;
            Debug.Log ("roop: " + count);
            yield return null;
        }
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

こんな感じのクラスをつくってGameObjectに貼り付けて、実行しながらそのオブジェクトをActive/非Activeと切り替えてやるとよくわかります。

 実質マルチスレッドみたいに扱っているものだから、依存してるGameObject把握してないと変な罠になってしまいそうなポイントです。

スポンサーリンク