首先,咱們有必要說明一下他們的執行順序:安全
awake--start--update--fixedupdate--lateupdate--OnGUI--reset--onDisable--onDestory函數
Awake用於在遊戲開始以前初始化變量或遊戲狀態。在腳本整個生命週期內它僅被調用一次.Awake在全部對象被初始化以後調用,因此你能夠安全的與其餘對象對話或用諸如GameObject.FindWithTag()這樣的函數搜索它們。每一個遊戲物體上的Awake以隨機的順序被調用。所以,你應該用Awake來設置腳本間的引用,並用Start來傳遞信息Awake老是在Start以前被調用。它不能用來執行協同程序。spa
Start僅在Update函數第一次被調用前調用。Start在behaviour的生命週期中只被調用一次。它和Awake的不一樣是Start只在腳本實例被啓用時調用。你能夠按需調整延遲初始化代碼。Awake老是在Start以前執行。這容許你協調初始化順序。在全部腳本實例中,Start函數老是在Awake函數以後調用。orm
fixupdate每一幀都執行,處理Rigidbody時,須要用FixedUpdate代替Update。例如:給剛體加一個做用力時,你必須應用做用力在FixedUpdate裏的固定幀,而不是Update中的幀。(二者幀長不一樣)FixedUpdate,每固定幀繪製時執行一次,和update不一樣的是FixedUpdate是渲染幀執行,若是你的渲染效率低下的時候FixedUpdate調用次數就會跟着降低。FixedUpdate比較適用於物理引擎的計算,由於是跟每幀渲染有關。Update就比較適合作控制。對象
LateUpdate是在全部Update函數調用後被調用,和fixedupdate同樣都是每一幀都被調用執行,這可用於調整腳本執行順序。例如:當物體在Update裏移動時,跟隨物體的相機能夠在LateUpdate裏實現。LateUpdate,在每幀執行完畢調用,他是在全部update結束後才掉,比較適合用於命令腳本的執行。官網上例子是攝像機的跟隨,都是在全部update操做完纔跟進攝像機,否則就有可能出現攝像機已經推動了,可是視角里還未有角色的空幀出現。生命週期
OnGUI是在渲染和處理GUI事件時調用。好比:你畫一個button或label時經常用到它。這意味着OnGUI也是每幀執行一次。遊戲
Reset是在用戶點擊檢視面板的Reset按鈕或者首次添加該組件時被調用。此函數只在編輯模式下被調用。Reset最經常使用於在檢視面板中給定一個最經常使用的默認值。事件
當物體被銷燬時 OnDisable將被調用,而且可用於任意清理代碼。腳本被卸載時,OnDisable將被調用,OnEnable在腳本被載入後調用。注意: OnDisable不能用於協同程序。ci
當MonoBehaviour將被銷燬時,這個函數被調用。OnDestroy只會在預先已經被激活的遊戲物體上被調用。注意:OnDestroy也不能用於協同程序。it