まぐらぼ

日々の雑記を書いています。

Unityイベント関数通知のCamera/GameObjectによる差異

c#スクリプトをカメラに付加した場合と、GameObjectに付加した場合で回ってくるイベント関数が異なるので注意が必要。
イベント関数の実行順序 

1. カメラの場合

void OnPreCull()
void OnPreRender()
void OnPostRender()
void OnRenderObject()
void OnGUI()

2. ゲームオブジェクトの場合

OnWillRenderObject()
OnRenderObject()
OnGUI()

イベント関数の仕様的な意味合いから、通常状態では処理がこない関数もある。OnBecameVisible等はGameObjectを動かしてカメラのビューボリュームのin/out時に処理が来るはず。


f:id:o-maguro:20160409181906j:plain

備考:
/*
OnPreCull: カメラがシーンを間引く前に呼び出されます。カリングにより、カメラにどのオブジェクトを表示するかが決定されます。OnPreCull は、カリングが発生する直前に呼び出されます。
OnBecameVisible/OnBecameInvisible: オブジェクトがカメラに対して表示または非表示になる際に呼び出されます。
OnWillRenderObject: オブジェクトが表示されると、各カメラに対して 一度 呼び出されます。
OnPreRender: カメラがシーンのレンダリングを開始する前に呼び出されます。
OnRenderObject: すべてのシーンレンダリング終了後に呼び出されます。GL クラスまたは Graphics.DrawMeshNow を使用して、この点にカスタムのジオメトリを描画できます。
OnPostRender: カメラがシーンのレンダリングを終了した後に呼び出されます。
OnRenderImage: 画面レンダリングが完了し、画面の処理が可能になった後に呼び出されます。イメージエフェクト を参照してください。
OnGUI: GUI イベントに応じて、フレームごとに複数回呼び出されます。
レイアウトおよび再描画イベントが最初に処理され、
その後にレイアウトおよびキーボード/マウスイベントが各入力イベントに対して処理されます。
OnDrawGizmos 可視化のためにシーンビュー内での Gizmos の描画に使用されます。
*/