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