我們都知道,Unity中某個腳本的履行順序是Awake、Start、Update、LateUpdate等,但是不同的腳本之間的履行順序是怎樣的呢?
例如我有兩個腳本Script1和Script2,那末這兩個腳本的Awake履行順序是怎樣的呢?
要知道真相我們就必須了解Unity后臺的運行原理,其實Unity后臺是單線程履行的,所謂的協程都是偽多線程。不同腳本的Awake在后臺的履行真相是這樣的:
這個關系我還真沒弄明白其中的規律,不過Unity提供了1個設置不同腳本之間履行順序的功能:
1、先在project窗口選中1個腳本文件,然后在Inspector卡中顯示以下:
2、點擊右上角Execution Order顯示以下:
3、點擊加號添加你想要排序的腳本文件。
4、拖動腳本文件進行排序。
這樣腳本就會依照你排的順序順次進行初始化。
我們之所以要設置腳本間的履行順序主要是為了不下面這類情況
但是還有另外1種方法來解決上述問題:
那就是在Script1的Awake創建cube,在Script2的Start訪問cube,這樣就不會出錯啦。
由于后臺的也是嚴格依照Awake早于Start的順序履行的,也就是先把所有腳本的Awake履行完,然后再履行所有腳本的Start。