本文作者從自身多年的Unity項目UI開發(fā)及優(yōu)化的經(jīng)驗出發(fā),從UGUI,CPU,GPU以及unity特有資源等幾個維度,介紹了unity手游性能優(yōu)化的一些方法。
在之前的文章《手游內(nèi)存占用過高?如何快速定位手游內(nèi)存問題》中提到,Mono內(nèi)存和native內(nèi)存是PSS內(nèi)存主要的組成部分,mono內(nèi)存更多的起到內(nèi)存調(diào)用的功能,因此常常成為了開發(fā)人員優(yōu)化內(nèi)存的起點;而在游戲的其他的進程中,同樣有很多因素影響著游戲的性能表現(xiàn)。本文將從UGUI的優(yōu)化角度,介紹unity游戲性能優(yōu)化的一些內(nèi)容。
一、UGUI簡介
UGUI是Unity官方推出的UI系統(tǒng),集成了所見即所得的UI解決方案, 其功能豐富并且使用簡單,同時其源代碼也是開放的,下載地址:https://bitbucket.org/Unity-Technologies/ui/src
相比于NGUI,UGUI有以下幾個優(yōu)點:
1. 所見即所得的編輯方式,在Scene窗口中即可編輯。
2. 智能的Sprite packer可以將圖片按tag自動生成圖集而無需人工維護,生成的圖集合并方式比較合理,無冗余資源。
3. 渲染順序與GameObject的Hierarchy順序相關(guān),靠近根節(jié)點顯示在底層,而靠近葉子節(jié)點顯示在頂層;這樣的渲染方式使得調(diào)整UI的層級比較方便和直觀。
4. RectTranForm及錨點系統(tǒng)更適合于2D平面布局,并且非常方便多分辨率屏幕自適配。
二、UI制作規(guī)范和指導(dǎo)方法
本文是關(guān)于UGUI優(yōu)化的,或許你會覺得UI的制作規(guī)范及指導(dǎo)方法與優(yōu)化無關(guān),其實很多性能問題往往是資源的不合理使用造成的,比如使用了尺寸過大的圖片、引用了過多的圖集以及加載了不必要的資源等。如果從設(shè)計和制作UI一開始就遵守特定的規(guī)范,則可以規(guī)避不必要的性能開銷。筆者根據(jù)參與的多個項目總結(jié)了以下幾點通用的規(guī)范和指導(dǎo)方法(這些規(guī)范適用于所有項目,不管你使用UGUI還是NGUI)。
1. 合理的分配圖集
合理的分配圖集可以降低drawcall和資源加載速度;具體細節(jié)如下:
● 同一個UI界面的圖片盡可能放到一個圖集中,這樣可以盡可能的降低drawcall。
● 共用的圖片放到一個或幾共享的圖集中,例如通用的彈框和按鈕等;相同功能的圖片放到一個圖集中, 例如裝備圖標和英雄頭像等;這樣可以降低切換界面的加載速度。
● 不同格式的圖片分別放到不同的圖集中,例如透明(帶Alpha)和不透明(不帶Alpha)的圖片,這樣可以減少圖片的存儲空間和占用內(nèi)存。(UGUI的sprite packer會自動處理這種情況)
網(wǎng)友評論