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