Unity 手遊專案優化建議(雜文)
1.載入預製體時,何時使用非同步載入。
當預製體複雜度很高,高達幾百ms,這個時候同步載入可能會造成中低端機型的卡頓。通過拆分預製體進行非同步載入可以避免卡頓,但可能所需的時間會更長。非同步所需的總時間比同步要長几倍,但是非同步分別發散到幾幀內後每幀的時間會很短因此卡頓就沒那麼嚴重了。(順便一說,在例項化一個預製體時才會載入預製體上相關資源,Resourse.Load載入預製體的速度還是相當快的)。因此我們可以把各個邏輯指令碼都放在子預製體上當它們例項結束就可以執行指令碼否則將導致預製體例項和指令碼執行之間有一段太長的空白期,將所有程式碼放在主預製體上必須得等到所有子預製體也載入完成之後在回撥。
2.養成良好習慣,為每一個遊戲物體賦予不同的名字,真的很重要。如果工程做到很大,當要去改UI時(改指令碼又是另一回事)你的每一個UI都叫Image Text 的時候,怕是真的想哭。(分類不同遊戲物體的名稱方便批量管理),同理,細分預製體也有助於批量管理。
3.每一個行為都應該寫在一個方法中,在複雜的工程中方法最好是多一些比較好,這樣在處理 “我們中出了一個叛徒”的情況下重寫就顯得遊刃有餘了。當你把主要邏輯都寫在一個Preshow()中的時候,你只能去重寫這整個Preshow()來達到目的。
4.封裝常用的系統函式,方便管理。舉個例子,將gameobject.setactive(false)封裝,假設我們以後要給這個物件隱藏前加一段動畫,那麼我們可以去修改封裝方法,而不需要去每一處去修改。
5.當文字中的文字內容長度需要變動時,使用bitfit或者content size fit來自適應,在搭UI的時候就應該考慮清楚每一個文字是否需要特殊化。
6.之前誤解了meta檔案的作用,以為meta檔案裡存放的是該資源的引用,其實meta裡存放的是對這個資源的唯一ID(用於識別資源),當prefab中出現資源miss時,是你上傳了prefab的meta,prefab的meta裡存放著引用資源的ID,然後去找引用ID,然後找不到,因為你資源的meta不存在,所以就miss了。
7.在做UI的時候,就應該本地化做好,不然最後再來改每一處的中文可就不是這麼容易了
8.相機的正交和透視模式下 物體位於相機同一平面時均不顯示。
9.高內聚低耦合。舉個例子,在遊戲開發中,當我們去開發介面時,應考慮到該介面是否可以獨立建立還是必須依賴於某個介面開啟,一般來說,當別人去呼叫我們的介面時應保證容錯率要高。想想如果開啟那個目標介面之前要建立N個介面那遊戲體驗簡直了
10.程式設計靠的是想象力.
11.把所有的共同點都抽象出來構建出一個框架,讓業務類只單純的實現業務邏輯。除了邏輯,所有東西都應該寫再框架中.