[ Unity C# ] 都是初始化,Awake、Start的差異

標籤: , , , , , ,

當我們要在 Unity 中處理初始化的部分時,大多都是寫在「Start」的函式中,但若寫在「Awake」也能有差不多的效果。

StartAwake 差在哪邊呢? 首先要先看一下Unity官方的生命週期圖


( 圖有點大張 )

 

可以看到 Awake 是比 Start 還要更早執行的,這意味著雖然兩者都是初始化的動作,但寫在 Awake 中可以比 Start 更早初始化一些東西

AwakeStart 中分別使用 Debug.Log 的效果

void Awake()
{
    Debug.Log("is Awake");
}
void Start()
{
    Debug.Log("is Start");
}

 

此外,Start 是在 OnEnable 之後才會執行,如果腳本在物件身上是不啟用的狀態,Awake 會執行但 Start 不會執行


( Start 的訊息沒出現 )

 

雖然 AwakeStart 的功能差不多,但會建議將需要初始化的內容寫在 Awake 之中

而若需要在腳本初始化時調用其他物件或著其他腳本 ( GetComponent ),就建議寫在 Start 之中

這是為了避免呼叫其他腳本時,被呼叫的腳本還沒有完成初始化的動作,導致實際執行的結果與預期的不符

AwakeStart 分開才能確保使用時已經完成初始化



相關文章

基礎教學 #02 – NetworkBehaviour NetworkBehaviour是在UNet中代替MonoBehaviour的基底類別。 要存取物件的網路資訊都必須透過NetworkBehaviour才能達成,因此在撰寫網路物件的新腳本時必須...
遊戲程式入門 #02 變數宣告與資料型態 何謂變數?變數是在程式語言中的基本概念之一,從字面上解釋就是「可變動的數」,用來作為存放資料的一個載體,存放資料的類型則是依據「資料型態」來定義。   宣告變數的程式碼如下: ...
教學 #04 – 滑鼠事件、鍵盤事件 Unity中事件被簡化的十分方便,如同Start()與Update()一樣只要打上函數名稱就可以了。 滑鼠的相關事件中較常用的有以下幾種: OnMouseDown - 滑鼠點擊事...
如何用UGUI製作簡易HP條 Unity的UGUI是很方便的UI工具,這篇文章會教大家如何製作簡單的HP條,以及如何讓HP條顯示在物件的頭上。 這邊先提供兩個簡單的圖片供教學用 生命條 生命條的框...