剛開始接觸Unity時對腳本中的函數(shù)執(zhí)行順序不是很了解
Start()函數(shù)是在Update()函數(shù)第一次執(zhí)行之前進行調(diào)用,它的執(zhí)行條件是需要首先實例化對象之后該對象的start()才能夠調(diào)用。
Awake()函數(shù)與Start()的機制差不多,同樣是在游戲運行過程中只執(zhí)行一次,但是Awake()是在游戲運行開始后系統(tǒng)自動調(diào)用,通常可以理解為Awake()比Start()先執(zhí)行,但也不一定。自己理解的就是Awake()在沒有實例化對象時,直接可以運行
Awake()多用于創(chuàng)建變量 Start()多用于給變量賦值
可以看一些Unity圣典的解釋:
Awake()當(dāng)一個腳本實例被載入時Awake被調(diào)用。Awake用于在游戲開始之前初始化變量或游戲狀態(tài)。在腳本整個生命周期內(nèi)它僅被調(diào)用一次.Awake在所有對象被初始化之后調(diào)用,所以你可以安全的與其他對象對話或用諸如 GameObject.FindWithTag 這樣的函數(shù)搜索它們。每個游戲物體上的Awke以隨機的順序被調(diào)用。因此,你應(yīng)該用Awake來設(shè)置腳本間的引用,并用Start來傳遞信息。Awake總是在Start之前被調(diào)用。它不能用來執(zhí)行協(xié)同程序。
Start()Start僅在Update函數(shù)第一次被調(diào)用前調(diào)用。Start在behaviour的生命周期中只被調(diào)用一次。它和Awake的不同是Start只在腳本實例被啟用時調(diào)用。你可以按需調(diào)整延遲初始化代碼。Awake總是在Start之前執(zhí)行。這允許你協(xié)調(diào)初始化順序。
新聞熱點
疑難解答