1. 程式人生 > >關於Unity單個對象多個腳本的Update調用的時序問題

關於Unity單個對象多個腳本的Update調用的時序問題

刪掉 調用 工具 計劃 遊戲開發 關於 多個 建議 時也

先說幾句廢話,

最近在研究Unity,

這玩意用起來比較簡單,

而且商店裏還有各種插件,

初學者也能輕松拼湊出一個像模像樣的遊戲(順便說一句,自己做著玩就無所謂了,但隨便拼湊個辣雞丟出來騙錢就不好了),

是一個不錯的遊戲開發工具,

不過知不道是不是開發商已經很久沒有自己用Unity開發一個完整的遊戲了,

這玩意很多細節做得都比較蛋疼,

而又因為是閉源的,

很多本來花不到一分鐘時間改一下源碼就能解決的問題現在也只能先用蛋疼的方式解決了,

之後計劃在此記錄下研究過程中發現的各種蛋疼的問題以及個人認為蛋疼程度最低的解決辦法,

希望能給此時也正在研究Unity的同學一些幫助。

言歸正傳,

最近在研究Unity的刷新流程,

官方文檔明確指出了不同對象的Update函數調用的順序是不確定的,

但是在相同對象中掛上去的腳本貌似沒有找到文檔說明調用順序是怎樣的(如果哪位同學找到了麻煩告訴我一下),

然後寫了一段代碼實驗了一下,

發現調用順序跟腳本掛上去的順序有關,

跟在面板上的順序無關,

然後又在論壇上發現有人說這個順序也是不固定的,

有可能你遊戲丟出去給別人玩的時候突然就出問題了,

額,好吧,

不過即使是按這個順序來執行的,

個人建議也不要依賴這個順序,

如果哪天新加了個腳本跟之前已經掛上去的腳本有時序上的依賴,

就得把把腳本全部刪掉重新再加一次,想想就蛋疼,

由於沒有源碼,不知道官方出於什麽目的要幹這種反人類的事情,

個人覺得按腳本在面板上的順序調用比較符合人類的直覺,

也不存在什麽開發難度,幾行代碼就搞定了,

不過既然現在引擎已經做成這樣了,

暫時能想到的一個不那麽蛋疼的解決辦法是寫一個刷新管理類,

在Start的時候把該對象其他需要Update的腳本拿出來,

然後在Update的時候按循序調用這些腳本的Upate函數就好了,

當然,這些腳本的Update函數得改個名字,例如ManualUpdate啥的

關於Unity單個對象多個腳本的Update調用的時序問題