2_腳本基本策略
在寫代碼的過程中保持良好的代碼習(xí)慣也是很重要的,這樣可以盡量避免不必要的性能損失,可以才以下幾點入手
使用最合理的方法完成任務(wù)
在編程過程中可以有很多方法達(dá)到同同樣的需求,這時就使用最合理的那個方法就行

移除空的回調(diào)定義
Unity特定的生命周期方法如:Awake Start Update 即使這些方法里面是沒有任何代碼的
Unity也會將這些方法掛載到回調(diào)中。這會浪費一些CPU資源,特別是場景中有多個MonoBehaviour時
緩存組件引用
在一段頻繁調(diào)用到的代碼中如果需要獲取多個引用時那么這樣可能會造成對cpu的浪費,這時應(yīng)該聲明成員變量去緩存這個引用,盡管這樣會增加一些內(nèi)存消耗,但通常是值得這樣做的
共享計算輸出
如果多個對象需要獲取一個相同的計算結(jié)果,那么讓它們之間共享結(jié)果就行
限制一些方法的更新頻率
有些函數(shù)不會在整個對象的生命周期內(nèi)都需要更新,或者更新的頻率也沒必要快到每幀都更新,可以把有這些特點的方法從Update調(diào)用改為使用協(xié)程調(diào)用,這樣會好很多
使用正確的方式設(shè)置對象的父節(jié)點
在實例化一個對象時最好將設(shè)置父節(jié)點的任務(wù)交給Instantiate()方法,如果實例好了再設(shè)置父節(jié)點就又要重新分配內(nèi)存
將引用分配給預(yù)先存在的變量
在Mono對象中私有變量是不會在Inspector面板中顯示的,這時如果有變量需要引用場景中的其它對象,就只能在運行時賦值,可以使用[SerializeField]屬性將private變量在Inspector面板中暴露出來,這樣就可以通過編輯器界面方便的改變它,同時又不破壞其封裝性
創(chuàng)建自定義的Update
將場景中所有需要調(diào)用Update方法的對象集中起來,在一個Update中調(diào)用,這樣做可以節(jié)省調(diào)用開銷提高緩存命中,比讓它們各自調(diào)用自己的Update方法要更加高效
Update接口
Update對象
Update管理