Unityのコルーチンは実行中かどうかの検出ができない?


よくあるテロップが流れる処理をコルーチンで行っていたんですが、
画面切り替えで非表示にしたら、コルーチンの動きが止まってしまいました。

これはどうやらスクリプトがくっついているゲームオブジェクトがSetActive(false)とかになると自動的に止まるらしいです(推測)
で、それはこまるというか、明示的に終了処理を入れたかったので、
OnDisable内でStopCoroutineを呼び出そうとしたんですが、

!coroutine->m_WaitingFor->m_ContinueWhenFinished == coroutine

!coroutine->m_RefCount > 0

!coroutine->m_CoroutineEnumeratorGCHandle != 0

とかって3つの赤いエラーログが出てきます。
察するにすでに終了しているみたいなんですが、んなもんどうやって利用者側が知れるんだよ・・・
スタートコルーチンの戻り値のCoroutineで止めようとしてるんですが、
そもそも実行中かどうかがわからないので、中断処理を入れると毎回このエラーが出てしまうという。

エラーが出続けるのは流石に気持ちが悪いので、OnDisableに来たら止まっているという前提で処理を行うように変更しましたが
もう少し使えるようにいろいろと公開してほしい。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">