Unity4.5からはコルーチンの停止に使うStopCoroutineメソッドで引数にIEnumratorを指定できるようになりました。
今まではStopAllCoroutinesで全部止めるか、StopCoroutineでメソッド名指定で止めるしか無かったので、便利になりました。
(※ただし後者はStartCoroutineをメソッド名指定で動かした場合に限る)
DoWorkCoroutineというコルーチンメソッドがあるとして、
こんな風にIEnumratorの参照を保持して利用します。
コルーチンの途中から再開してしまうので注意が必要です。
(※既に末尾まで終了している場合には何も起きないようにみえる)
なので、コルーチンを始めから再スタートさせたい場合には以下のようにする必要があります。
任意のコルーチンを途中で一時停止・途中から再開させる用途で使えます。
参照:MonoBehaviour.StopCoroutine
今まではStopAllCoroutinesで全部止めるか、StopCoroutineでメソッド名指定で止めるしか無かったので、便利になりました。
(※ただし後者はStartCoroutineをメソッド名指定で動かした場合に限る)
DoWorkCoroutineというコルーチンメソッドがあるとして、
こんな風にIEnumratorの参照を保持して利用します。
// IEnumerator保持 IEnumerator routineWork = DoWorkCoroutine (); // コルーチン開始 StartCoroutine (routineWork); // コルーチン停止 StopCoroutine (routineWork);ただし、これで停止したコルーチンを同じIEnumratorを指定して再スタートさせた場合は
コルーチンの途中から再開してしまうので注意が必要です。
(※既に末尾まで終了している場合には何も起きないようにみえる)
なので、コルーチンを始めから再スタートさせたい場合には以下のようにする必要があります。
// IEnumerator保持 IEnumerator routineWork = DoWorkCoroutine (); // コルーチン開始 StartCoroutine (routineWork); // コルーチン停止 StopCoroutine (routineWork); // コルーチン再スタート // 同じIEnumeratorを指定すると途中から再開されてしまうので再取得する routineWork = DoWorkCoroutine (); StartCoroutine (routineWork);逆に、IEnumratorの参照を取りなおさなければ
任意のコルーチンを途中で一時停止・途中から再開させる用途で使えます。
参照:MonoBehaviour.StopCoroutine