近來,一直在學習Unity3D,對於任何一個游戲對象的腳本組件,都有很多的方法,Update,Start,OnGUI,Destory等等,那么他們的先后執行順序是怎樣的呢?經過各種查閱資料,基本有了一個個人的理解,廢話不多說,先上一張圖:
這張圖片是2012年左右,一位美國人寫的,還比較有權威性。從圖上可以看出,當程序開始加載,首先執行的是Awake方法,在Awake方法中就對場景或者Assets文件下的資源進行加載並激活。然后緊接着是執行OnEnable方法,在這里可以this.enable=false,但是一旦設置了enable=fale,那么程序將直接跳到OnDisable方法,其余的都不會執行。。
如果設置了this.enable=true,腳本將繼續向下執行。轉入OnStart方法,在這里程序會去判斷游戲的OnStart方法是否執行過,如果執行過,將不再執行。如果沒有執行過,將進入OnStart方法執行,可以在該方法里面做一些初始化操作。比如第一次啟動時,將某個游戲對象的坐標設置在了(0,0,0)這個點,然后對象可能變換了位置。后來this.enable=fale(被禁用了),當再啟用時(this.enable=true),這個游戲對象將不會再重新回到(0,0,0)這個點。
當OnStart執行完之后,就進入了幾個Update方法,先是FixUpdate,然后Update,最后是LateUpdate方法,如果后面寫了Reset,將又回到FixUpdate方法,在這四個事件之間進行循環流動。
繼續往下執行就是渲染階段了,需要注意的渲染模塊的OnGUI方法,用於繪制圖形界面,重繪過程中會不斷的擦除幀,繪制幀,每一幀都會被先擦除再重新繪制,可以認為是不斷重復的。在這里可以繪制用於提示用戶信息的文本框或按鈕等。當然如果你使用了NGUI,這個生命周期事情就可以不再考慮了。
最后就是卸載模塊。在該模塊中先調用OnDisable方法,但在該方法游戲對象並不會被銷毀,還可以重新回到Enable狀態(OnEnable=true),當手動銷毀時,才會調用OnDestroy方法,至此整個腳本組件的執行生命周期結束。
寫的比較簡單,潦草,還往大家提出建議,共同成長。