万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

カスタムコルーチンの日本語公式記事を万年素人が理解するメモ

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. 疑問

で、何が便利になった?

解説

keepWaitingfalseにしたらコルーチンを終えるようなのができるようになった。 WaitForSecondの代わりに使えるものを自分で定義できるようになった。