[Unity] Simple script life cycle

今天開始我會慢慢寫一點有關於Unity操作的心得,會以半說明半心得的方式呈現,對於各位讀者在使用後的效能展現上,我不能打包票,但希望我的經驗可以作為一種參考。
Unity的腳本有他自己內建的呼叫方法,比方說Start、Awake、OnEnable,前兩個方法在腳本的生命週期內只會被呼叫一次。當物件被初始化,呼叫的順序是:
  • Awake()
  • Start()
  • OnEnale()
Awake是在腳本實例被載入時呼叫,可以用來初始化變數或遊戲狀態,因為它是在所有的物件都被初始化後才被呼叫的,所以你也可以放心的在裡面搜尋或跟其他物件溝通。且因為物件之間的Awake是隨機執行的,所以你最好在Wake裡面設定好物件之間的參考,然後用Start傳遞資料。此外,若物件是disable,就不會呼叫Start,這也是最好在Awake裡面初始化變數的原因。
Start則是腳本被啟動(Active/enable)之後且在Update第一次被呼叫之前所執行。整體而言,Scene裡面的任何一個物件呼叫Start之前,會呼叫完所有物件的Awake。
OnEnable則是當物件被啟用時就會呼叫,因此有可能會被呼叫好幾次。通常這可以用來註冊一些事件,畢竟只有啟用時才要呼叫事件,而且一旦啟用腳本就會呼叫此方法,只是要注意的是也要在Disable裡面移除所註冊的事件。

留言