Roba Memo - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

yield return null と WaitForEndOfFrame の違い

どちらも、次のフレームで再開という感じだけど、タイミングが微妙に違うみたい。

Unity - マニュアル: イベント関数の実行順
ここにある、関数のフローチャートを拝借。
f:id:nico-taniku:20170913103925p:plain:w300

該当部分を抜粋
f:id:nico-taniku:20170913104024p:plain:w600

たぶん、これが再開される位置なんだと思う。

yield return nullは、レンダリングされる前。Game logic
WaitForEndOfFrameは、レンダリングされた後。End of frame

なので、
レンダリング前に再開したい場合 = yield return null
レンダリング後に再開したい場合 = WaitForEndOfFrame

レンダリングってなんやねん?

図を見るとScene / Gizmo / GUI とあるみたい。
Sceneは、たぶんライトやらテクスチャやらのことじゃないかと。
Gizmoは、どうやらドロー描画のことっぽい。
GUIは、インターフェースかな。Canvasの部分やと思う。

レンダリングの後ということは、レンダリングに必要な情報が全て揃った状態なので、そういう情報を扱いたい場合はWaitForEndOfFrameを使う。
って感じかな。

以上。