Awake ->OnEable-> Start ->-> FixedUpdate-> Update -> LateUpdate ->OnGUI ->Reset -> OnDisable ->OnDestroy
using UnityEngine; using System.Collections; public class timetest : MonoBehaviour { void LateUpdate() { print("LateUpdate"); } void OnGUI() { print("OnGUI"); } void Awake() { print("Awake"); } void OnEnable() { print("OnEnable"); } void Start() { print("Start"); } void Update() { print("Update"); } void FixedUpdate() { print("FixedUpdate"); } void Reset() { print("OnReset"); } void OnDestroy() { print("OnDestroy"); } void OnDisable() { print("OnDisable"); } }打印結果例如以下

以下我們針對每個方法進行具體的說明(摘自http://www.unitymanual.com/thread-14461-1-1.html):
1.Awake:用於在游戲開始之前初始化變量或游戲狀態。在腳本整個生命周期內它僅被調用一次.Awake在全部對象被初始化之后調用。所以你能夠安全的與其它對象對話或用諸如GameObject.FindWithTag()這種函數搜索它們。每一個游戲物體上的Awake以隨機的順序被調用。
因此。你應該用Awake來設置腳本間的引用。並用Start來傳遞信息Awake總是在Start之前被調用。它不能用來運行協同程序。
2.Start:僅在Update函數第一次被調用前調用。Start在behaviour的生命周期中僅僅被調用一次。
它和Awake的不同是Start僅僅在腳本實例被啟用時調用。
你能夠按需調整延遲初始化代碼。Awake總是在Start之前運行。這同意你協調初始化順序。在全部腳本實例中。Start函數總是在Awake函數之后調用。
3.FixedUpdate:固定幀更新。在Unity導航菜單條中。點擊“Edit”-->“Project Setting”-->“Time”菜單項后,右側的Inspector視圖將彈出時間管理器,當中“Fixed Timestep”選項用於設置FixedUpdate()的更新頻率,更新頻率默覺得0.02s。
4.Update:正常幀更新,用於更新邏輯。每一幀都運行,處理Rigidbody時。須要用FixedUpdate取代Update。比如:給剛體加一個作用力時,你必須應用作用力在FixedUpdate里的固定幀,而不是Update中的幀。(兩者幀長不同)FixedUpdate,每固定幀繪制時運行一次。和update不同的是FixedUpdate是渲染幀運行,假設你的渲染效率低下的時候FixedUpdate調用次數就會跟着下降。
FixedUpdate比較適用於物理引擎的計算,由於是跟每幀渲染有關。
Update就比較適合做控制。
5.LateUpdate:在全部Update函數調用后被調用,和fixedupdate一樣都是每一幀都被調用運行,這可用於調整腳本運行順序。比如:當物體在Update里移動時,尾隨物體的相機能夠在LateUpdate里實現。LateUpdate,在每幀Update運行完成調用。他是在全部update結束后才調用,比較適合用於命令腳本的運行。官網上樣例是攝像機的尾隨,都是在全部update操作完才跟進攝像機。不然就有可能出現攝像機已經推進了,可是視角里還未有角色的空幀出現。
6.OnGUI:在渲染和處理GUI事件時調用。
比方:你畫一個button或label時經常常使用到它。
這意味着OnGUI也是每幀運行一次。
7.Reset:在用戶點擊檢視面板的Resetbutton或者首次加入該組件時被調用。此函數僅僅在編輯模式下被調用。
Reset最經常使用於在檢視面板中給定一個默認值。
8.OnDisable:當物體被銷毀時 OnDisable將被調用,而且可用於隨意清理代碼。腳本被卸載時,OnDisable將被調用,OnEnable在腳本被加載后調用。注意: OnDisable不能用於協同程序。
9.OnDestroy:當MonoBehaviour將被銷毀時,這個函數被調用。OnDestroy僅僅會在預先已經被激活的游戲物體上被調用。注意:OnDestroy也不能用於協同程序。
備注:
協同程序,即在主程序執行時同一時候開啟還有一段邏輯處理,來協同當前程序的執行。換句話說,開啟協同程序就是開啟一個線程。在Unity3d中。使用MonoBehaviour.StartCoroutine方法就可以開啟一個協同程序,也就是說該方法必須在MonoBehaviour或繼承於MonoBehaviour的類中調用。
游戲蠻牛:http://www.unitymanual.com
版權聲明:本文博主原創文章,博客,未經同意不得轉載。