探究Unity腳本執行順序

做項目踩坑了,大佬幫我找到了問題,然後點了我一下,意識到自己的問題。
這麼久以來,做開發一直是針對某個腳本然後把自己的邏輯一條線的寫清楚就完事了,然後剩餘的事情交給unity做,就是unity負責的這部分,自己一直沒搞清楚,一直理所當然的覺得自己不需要考慮,結果經常找bug找不到問題出現在哪。記得很久之前踩過一次awake和star執行順序的坑,不知道當時是怎麼就跳出來了,這次是update和lateupdate的坑,自己沒跳出來。
然後就去網上查了一下,大部分都是單純描述單個腳本的生命週期,涉及到多個的很少(我沒翻牆找)。於是決定自己探究一下。
1.對於單個物體上掛載的單個腳本,執行順序(僅說常用的)Awake—》Enable—》Start—》Fixupdate—》OnGui—》Update—》LateUpdate,這個就不細說 了。
2.對於單個個物體上掛載的多個腳本,後掛載的先執行,類似棧,後進先出。(另外,屬性面板的上的順序不影響執行順序)

先掛T1後掛T3
上圖是先掛T1後掛T3
先掛T3後掛T1
上圖是先掛T3後掛T1
在這裏插入圖片描述
上圖是先掛T3後掛T1,然後右鍵T1,MoveUp調整順序
3.對於掛載同一個腳本兩個不同物體,遵循第2條,後掛載的先執行(兩個物體之間的關係不影響執行順序)
在這裏插入圖片描述
上圖是先給cube掛T1,再給sphere掛T1
在這裏插入圖片描述
上圖是先給sphere掛T1,再給cube掛T1
暫時想到測這三個方面的,後面想到再補充吧,歡迎大家提。
當然,unity也能改變這個腳本執行順序,資源面板下點擊任意腳本。
在這裏插入圖片描述
把需要固定執行順序的腳本拖進來,然後給他個值,值越大越後執行,然後apply
在這裏插入圖片描述
在這裏插入圖片描述
上圖是後修改後,先掛T1後掛T3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章