UGUI優化總結

1.檢查空Imagegit

遊戲中許多時候會使用一個透明的Image組件來監聽點擊事件或者屏蔽Image後面的按鈕事件,空的Image能夠解決這個問題,用起來也很方便,可是空的Image照舊會參與繪製,從而產生overdraw。解決辦法是擴展Graphic組件來替換Image組件。工具

遊戲中使用工具檢查空Image: 對應prefab上Image組件的Sprite爲空或Color.a透明(<0.05f),咱們將使用了空Image的prefab列出來手動進行替換。監聽事件時還會使用一個Button或者EventTrigger來實現,這種需着重檢查。工具見末尾連接地址。性能

2.優化九宮格Image測試

九宮格圖像使用的也比較多,Image選爲Sliced類型後會有一個fillCenter選項,默認狀況下該選項是勾選的,但若是九宮格的中間區域爲透明圖像,其實不須要勾選fillCenter,從而下降overdraw。因此咱們須要使用工具檢測該Image的sprite的中心區域優化

是否爲透明,將透明的prefab列出來供檢查。spa

3.檢查Mask組件遊戲

Mask組件也會被用到,最可能是用在ScrollView中,網上也有不少資料介紹Mask組件會產生額外的兩個drawcall,而大部分時候Mask都是矩形的,因此其實可使用RectMask2D組件來替換掉Mask組件,官方也比較推薦RectMask2D組件,事件

但若是你的Mask組件不是矩形的那麼就不能替換。it

4.檢查錯誤透明材質擴展

項目中有不少材質美術設置有些問題,從而影響性能,其中一個就是Material所使用的紋理是RGB格式或者雖然RGBA格式可是A通道爲1,可是美術卻給使用了一個透明的Shader進行渲染,這種設置雖不會出錯可是會影響性能。因此咱們須要檢測出

renderType爲Transparent或者TransparentCutout類型,而且他的renderQueue>2000(2000爲Geometry)且<=3000(3000爲Transparent)的材質,若是他的主紋理不透明,則列舉出使用了這種材質的prefab或者Scene,以便檢查。

5.錯誤的UI設置

以前在檢查一個UI合批失效的問題,明明打了圖集,但就是不能合批,非常詫異,通過測試發現若是你的Image組件pos.z不爲零或者rota.x或rota.y不爲零,那麼會被看成3DUI從而不參與合批,增長drawcall,而這些非零值有時每每是不須要甚至是

不注意被設置上的,但卻影響了這個合批,非常坑人。因此須要用工具檢查這種被設置錯誤的UI,酌情進行重置。

 

工具地址:https://gitee.com/planefight/Tools.git

相關文章
相關標籤/搜索