Unity のイベント関数の実行順はこちらの公式ドキュメントに詳しく記載されていますが、カメラが複数あるとき OnRenerObject , OnPostRender あたりがどのように動くか試してみたログをアップしておきます。
UnityのScene上のカメラも絡んでいるので少々ややこしいです。その辺りの分析は後日余裕があれば追記します。
Camera2 :: OnDrawGizmos() Camera1 :: OnDrawGizmos() Plane1 :: OnDrawGizmos() Camera2 :: OnDrawGizmos() Camera1 :: OnDrawGizmos() Plane1 :: OnDrawGizmos() ############## Initialize Plane1 :: Awake() Plane1 :: OnEnable() Camera2 :: Awake() Camera2 :: OnEnable() Camera1 :: Awake() Camera1 :: OnEnable() Camera2 :: OnApplicationPause() Camera1 :: OnApplicationPause() Plane1 :: OnApplicationPause() Plane1 :: Start() Camera2 :: Start() Camera1 :: Start() Plane1 :: FixedUpdate() Camera2 :: FixedUpdate() Camera1 :: FixedUpdate() ... ( FixedUpdate() が続く )
########################################## ############## Frame ################ ########################################## Plane1 :: Update() Camera2 :: Update() Camera1 :: Update() Plane1 :: LateUpdate() - LateUpdate()は、Update()後にフレームごとに一度呼び出されます。 Camera2 :: LateUpdate() Update()で実行される計算は、LateUpdate()が始まると完了します。 Camera1 :: LateUpdate() LateUpdate()の一般的な使用は次の三人称カメラです。 ############## Camera 1
Camera1 :: OnPreCull() - カメラがシーンを間引く前に呼び出されます。 カリングにより、カメラにどのオブジェクトを表示するかが決定されます。 OnPreCull は、カリングが発生する直前に呼び出されます。 Plane1 :: OnWillRenderObject() - オブジェクトが表示されると、各カメラに対して 一度 呼び出されます。 Camera1 :: OnPreRender() - カメラがシーンのレンダリングを開始する前に呼び出されます。 (Camera1のレンダリング) Camera1 :: OnPostRender() - カメラがシーンのレンダリングを終了した後に呼び出されます。 Plane1 :: OnRenderObject() - すべてのシーンレンダリング終了後に呼び出されます。 Camera2 :: OnRenderObject() GL クラスまたは Graphics.DrawMeshNow を使用して、 Camera1 :: OnRenderObject() この点にカスタムのジオメトリを描画できます。 Camera1 :: OnRenderImage() - 画面レンダリングが完了し、画面画像の処理が可能になった後に呼び出されます。 ############## Camera 2
Camera2 :: OnPreCull() Plane1 :: OnWillRenderObject() Camera2 :: OnPreRender() (Camera2のレンダリング) Camera2 :: OnPostRender() Plane1 :: OnRenderObject() Camera2 :: OnRenderObject() Camera1 :: OnRenderObject() Camera2 :: OnRenderImage() ############## GUI Plane1 :: OnGUI() Camera2 :: OnGUI() Camera1 :: OnGUI() Camera1 :: OnGUI() Camera2 :: OnGUI() Plane1 :: OnGUI()
Plane1 :: OnWillRenderObject() Plane1 :: OnRenderObject() Camera2 :: OnRenderObject() Camera1 :: OnRenderObject() Camera2 :: OnDrawGizmos() Camera1 :: OnDrawGizmos() Plane1 :: OnDrawGizmos() ########################################## Plane1 :: FixedUpdate() Camera2 :: FixedUpdate() Camera1 :: FixedUpdate() Plane1 :: FixedUpdate() Plane1 :: FixedUpdate() ... (FixedUpdateが続く) ########################################## ############## Next Frame ################ ##########################################