體驗和性能
極端的體驗和極端的性能都不現實。在手遊平臺上,我們應該追求的是體驗和性能平衡。
性能評估標準
遊戲中,任壹元素(UI圖片、特效、模型等)對性能的影響都可以拆分為以下4種影響:CPU消耗、GPU消耗、外存消耗和內存消耗。
現就UI相關的影響進行舉例如下。
CPU消耗
CPU負責把UI界面的邏輯結構進行更新、匯總,並負責把這些數據準備好。最後把這些信息傳給GPU。
UI壹般影響CPU的因素包括:
界面結構復雜度
界面結構變化頻率
動畫復雜度
GPU消耗
GPU負責最終畫面的繪制、渲染。因為渲染是復雜的流程、且運算量巨大、且手機GPU固有的硬件限制(核心數少、浮點運算速度慢),手遊的性能瓶頸往往都發生在GPU。
也就是說,GPU消耗是性能優化的重中之重。
UI壹般影響GPU的因素包括:
繪制次數(drawcall),和單張圖片的數量等因素相關
圖片最終在屏幕所展現的面積
圖片是否透明
shader的復雜度
重繪度(overrdraw,單位像素的重新繪制次數)
其中,特別值得註意的是drawcall和重繪復雜度。
drawcall
每壹個不同“材質”的東西都需要占用壹個drawcall。每多壹個drawcall必然帶來額外的CPU消耗和GPU消耗。
可以簡單認為,當兩個東西的材質的shader相同,且紋理相同,則它們是同壹個材質,在渲染它們的時候,引擎會進行優化,會合並drawcall為1個。
overdraw
overdraw表示單位像素的重新繪制次數
右部表示overdraw的程度,越“亮”的區域表示overdraw的程度越高,也就越消耗GPU。
外存消耗
外存消耗指的是資源在用戶“硬盤裏占用了多少多少M”。
如果外存過大,可能導致用戶不願意下載,或者下載安裝後,硬盤空間不夠,安裝不成功。
壹般影響外存的因素包括:
圖片數目
圖片的分辨率大小
圖片是否壓縮
另外,優化了外存,內存往往也會從中受益。
內存消耗
內存消耗指的是“遊戲在實際運行時,占用多少M”。
如果內存過大,可能會導致用戶遊戲體驗不流暢,甚至crash。
壹般影響內存的因素包括:
圖片數目
圖片的分辨率大小
圖片的分辨率是否是2的N次方,
圖片是否壓縮
UI制作要點UI輸出的圖片,可在Unity裏設置為新的等比縮放分辨率