(轉載)MonoBehaviour的事件和具體功能總結
精簡版(按字母順序)
Awake 喚醒
CancelInvoke 取消呼叫
FixedUpdate 固定更新
InvokeRepeating 重複呼叫
Invoke 呼叫
IsInvoking 是否呼叫
LateUpdate 晚於更新
OnApplicationFocus當程式焦點
OnApplicationPause當程式暫停
OnApplicationQuit 當程式退出
OnBecameInvisible 當不可見
OnBecameVisible 當可見
OnCollisionEnter 當進入碰撞
OnCollisionExit 當退出碰撞
OnCollisionStay 當逗留碰撞
OnConnectedToServer當連線到伺服器
OnControllerColliderHit當控制碰撞器碰撞
OnDestroy 當銷燬
OnDisable 當不可用
OnDisconnectedFromServer當從伺服器斷開連線
OnDrawGizmosSelected當選擇時繪製Gizmos
OnDrawGizmos 當繪製Gizmos
OnEnable 當可用
OnFailedToConnectToMasterServer當連線到主伺服器失敗
OnFailedToConnect 當連線失敗
OnGUI 當介面
OnJointBreak 當關節斷開
OnLevelWasLoadedOnLevelWasLoaded
OnMasterServerEvent當主伺服器事件
OnMouseDown 當滑鼠按下
OnMouseDrag 當滑鼠拖動
OnMouseEnter 當滑鼠進入
OnMouseExit 當滑鼠退出
OnMouseOver 當滑鼠經過
OnMouseUpAsButton 當滑鼠作為按鈕彈起時
OnMouseUp 當滑鼠彈起
OnNetworkInstantiate當網路例項
OnParticleCollision當碰撞粒子
OnPlayerConnected 當玩家連線
OnPlayerDisconnected當玩家斷開連線
OnPostRender 當渲染之後
OnPreCull 當消隱之前
OnPreRender 當渲染之前
OnRenderImage 當渲染圖片
OnRenderObject 當渲染物體
OnSerializeNetworkView當序列化網路檢視
OnServerInitialized當伺服器初始化
OnTriggerEnter 當進入觸發器
OnTriggerExit 當退出觸發器
OnTriggerStay 當逗留觸發器
OnWillRenderObject當渲染物體之前
print 列印
Reset 重置
StartCoroutine 開始協同程式
Start 開始
StopAllCoroutines 停止所有協同程式
StopCoroutineStopCoroutine 停止協同程式
Update 更新
useGUILayout 使用介面佈局
--------------------------------------------
詳細版 (按執行順序)
Awake
當前控制指令碼例項被裝載的時候呼叫。一般用於初始化整個例項使用。
Start
當前控制指令碼第一次執行Update之前呼叫。
Update
每幀都執行一次。這是最常用的事件函式。
FixedUpdate
每固定幀繪製時執行一次,和update不同的是FixedUpdate是渲染幀執行,如果你的渲染效率低下的時候FixedUpdate呼叫次數就會跟著下降。FixedUpdate比較適用於物理引擎的計算,因為是跟每幀渲染有關。Update就比較適合做控制。
LateUpdate
在每幀執行完畢呼叫,他是在所有update結束後才掉,比較適合用於命令指令碼的執行。官網上例子是攝像機的跟隨,都是在所有update操作完才跟進攝像機,不然就有可能出現攝像機已經推進了,但是視角里還未有角色的空幀出現。
Reset
這個是編輯器模式情況下你點選reset按鈕(如果有的話)呼叫的,你可以在這裡做除錯的初始化工作。
OnApplicationFocus
當玩家獲得或失去焦點時傳送給所有遊戲物體,可以作為協同程式,在函式中使用yield語句即可。
OnApplicationPause
當玩家暫停時傳送到所有的遊戲物體,可以作為協同程式,在函式中使用yield語句即可。
OnApplicationQuit
在應用退出之前傳送給所有的遊戲物體。當用戶停止執行模式時在編輯器中呼叫。當web被關閉時在網路播放器中被呼叫。
OnBecameInvisible
當renderer(渲染器)在任何相機上都不可見時呼叫OnBecameInvisible。
OnBecameVisible
當renderer(渲染器)在任何相機上可見時呼叫OnBecameVisible。
OnCollisionEnter
當此collider/rigidbody觸發另一個rigidbody/collider時,OnCollisionEnter將被呼叫。相對於OnTriggerEnter,OnCollisionEnter傳遞的是Collision類而不是Collider。Collision包含接觸點,碰撞速度等細節。如果在函式中不使用碰撞資訊,省略collisionInfo引數以避免不必要的運算。注意如果碰撞體附加了一個非動力學剛體,只發送碰撞事件。
OnCollisionExit
當此collider/rigidbody停止觸發另一個rigidbody/collider時,OnCollisionExit將被呼叫。
OnCollisionStay
當此collider/rigidbody觸發另一個rigidbody/collider時,OnCollisionStay將會在每一幀被呼叫。
OnConnectedToServer
當你成功連線到伺服器時,在客戶端呼叫。
OnDisconnectedFromServer
當失去連線或從伺服器端斷開時在客戶端呼叫。
OnFailedToConnect
當一個連線因為某些原因失敗時在客戶端呼叫。
OnFailedToConnectToMasterServer
前兩個 當客戶端成功連線到伺服器或者斷開伺服器時傳送此訊息。
後兩個 當連線失敗時候觸發
OnMasterServerEvent
當Master伺服器傳送報告時候觸發。
OnNetworkInstantiate
當一個物體使用Network.Instantiate進行網路初始化時呼叫。這對於禁用或啟用一個已經初始化的物體元件來說是非常有用的,它們的行為取決於它們是在本地還是在遠端。注意: 在NetworkMessageInfo裡的networkView屬性不能在OnNetworkInstantiate裡使用。
OnPlayerConnected
當一個新玩家成功連線時在伺服器上被呼叫。
OnPlayerDisconnected
當一個玩家從伺服器上斷開時在伺服器端呼叫。
OnControllerColliderHit
在移動的時,當controller碰撞到collider時OnControllerColliderHit被呼叫。它可以用來在角色碰到物體時推開物體。
OnParticleCollision
當粒子碰到collider時被呼叫。
這個可以用於遊戲物件被粒子擊中時應用傷害到它上面。這個訊息被髮送到所有附加到theWorldParticleCollider 的指令碼上和被擊中的碰撞體上。這個訊息只有當你在theWorldParticleCollider 檢視面板中啟用了sendCollisionMessage 才會被髮送。
OnDisable
當物件變為不可用或非啟用狀態時此函式被呼叫。當物體被銷燬時它將被呼叫,並且可用於任意清理程式碼。當指令碼編譯完成之後被重載入時,OnDisable將被呼叫,OnEnable在指令碼被載入後呼叫。
OnEnable
當物件變為可用或啟用狀態時此函式被呼叫。OnEnable不能用於協同程式
OnDrawGizmos
OnDrawGizmosSelected
編輯器狀態時繪製Gizmos和Gizmos被選取時候觸發。
注:Gizmos參見我另一篇blog,他是用與做自己的元件時候用的,比如路徑點繪製之類的。
OnGUI
繪製GUI時候觸發。一般在這個函式裡繪製GUI選單。
OnJointBreak
當附在同一物件上的關節被斷開時呼叫
OnLevelWasLoaded
當一個新關卡被載入時此函式被呼叫
OnMouseDown
當滑鼠在GUIElement(GUI元素)或Collider(碰撞體)上點選時呼叫OnMouseDown。這個事件將傳送給 Collider 或 GUIElement 上的所有指令碼。注意:此函式在iPhone上無效
OnMouseDrag
當用戶滑鼠拖拽GUIElement(GUI元素)或Collider(碰撞體)時呼叫 OnMouseDrag 。
OnMouseEnter
當滑鼠進入到GUIElement(GUI元素)或Collider(碰撞體)中時呼叫OnMouseEnter
OnMouseExit
當滑鼠移出GUIElement(GUI元素)或Collider(碰撞體)上時呼叫OnMouseExit。
OnMouseOver
當滑鼠懸浮在GUIElement(GUI元素)或Collider(碰撞體)上時呼叫 OnMouseOver 。
OnMouseUp
滑鼠事件,都是當滑鼠和gui或者碰撞體(Collider)互動時候觸發。需要說明的是drag其實就是滑鼠down後up之前持續每幀都會發送此訊息。
OnPostRender
這個函式僅用於宿主為攝像機的指令碼。當此攝像機範圍內所有渲染都完成時候觸發此訊息。
OnPreCull
這個函式僅用於宿主為攝像機的指令碼。當此攝像機剔除了某個渲染場景時候觸發此訊息。(未驗證)
OnPreRender
這個函式僅用於宿主為攝像機的指令碼。當此攝像機開始渲染某個場景時候觸發此訊息。
OnRenderImage
當所有渲染完成image的postprocessing effects(只有pro版支援)後觸發。
OnRenderObject
這個函式僅用於宿主為攝像機的指令碼。當使用Graphics.DrawMeshNow 或者其他函式繪製自己建立的物體渲染完畢時觸發。
OnSerializeNetworkView
在一個網路檢視指令碼中,用於自定義變數同步,它自動決定被序列化的變數是否應該傳送或接收,檢視下面的例子獲取更好的描述。這個依賴於誰擁有這個物體,例如,所有者傳送,其他物體接收。
OnServerInitialized
當Network.InitializeServer被呼叫並完成時,在伺服器上呼叫這個函式。
OnTriggerEnter
當Collider(碰撞體)進入trigger(觸發器)時呼叫OnTriggerEnter。這個訊息被髮送到觸發器碰撞體和剛體(或者碰撞體假設沒有剛體)。注意如果碰撞體附加了一個剛體,也只發送觸發器事件。
OnTriggerExit
當Collider(碰撞體)停止觸發trigger(觸發器)時呼叫OnTriggerExit
OnTriggerStay
當碰撞體接觸觸發器時,OnTriggerStay將在每一幀被呼叫。
OnWillRenderObject
如果物件可見每個相機都會呼叫它。如果MonoBehaviour被禁用,此函式將不被呼叫。此函式在消隱過程中被呼叫,在渲染所有被消隱的物體之前被呼叫。你可以用它來建立具有依賴性的紋理並且只有在被渲染的物體可見時才更新這個紋理。舉例來講,它已用於水元件中。Camera.current將被設定為要渲染這個物體的相機。