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

シェアする

ヨメレバCSS

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

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

エディタで適当に

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

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

スポンサーリンク
GoogleAdSence レクタングル(大)

コメント

  1. 通りすがり より:

    参考になればですが、
    コルーチンを実行するための永続的に保持されるGameObjectを作り、
    そのオブジェクトからコルーチンを実行すれば、
    ゲームオブジェクトそのものが停止してもコルーチンは継続して実行できます。

    StartCoroutine (SampleRoop ());

    これを停止させたくない!という場合は
    シングルトンの要素を持ち合わせた「CoroutineManager.cs」※MonoBehaviour継承
    を作り、

    CoroutineManager.instance.StartCoroutine (SampleRoop ());

    のようにすれば非Activeでもコルーチンは停止しなくなります。

    • かげろ かげろ より:

      おお、そうですね、コルーチン用の永続的なGameObjectを用意して、それから実行してやるのが解決になりますね。
      ありがとうございます!