http://blogs.unity3d.com/jp/2015/12/01/custom-coroutines/
1. 疑問
もしWaitForSecondsをtimescaleを0に指定しながら使用したら、(timescaleが0以外に再び戻るまで) 永遠に待ち続けることになるのです。
理由
これはつまりWaitForSeconds に1秒待つように指定した時、timescaleが0.5になっていれば、実世界では2秒(1 / 0.5 = 2)待つことになるということです
1 / 0.5 = 2
つまり秒数 / timescale = 答え
という式。
この話は1秒の時の話。
1 / 0 = ∞
だから。
2. 疑問
最初の1回だけ動作し
理由
今回問題になってるのは、m_Dropdownがnullにならなかったことによること。
if (!IsActive () || !IsInteractable () || m_Dropdown != null)
この3条件のいずれかを満たしてしまうことが問題。
つまり、ドロップダウンコンポーネントを1度動作すると、!IsActive ()
と!IsInteractable ()
自体は満たさなくなる。
しかし、m_Dropdownが変化しないので満たしてしまいreturn
される。
3. 疑問
で、何が便利になった?
解説
keepWaiting
をfalse
にしたらコルーチンを終えるようなのができるようになった。
WaitForSecondの代わりに使えるものを自分で定義できるようになった。