Unity UGUI 優化摘錄

2021-08-28 14:26:44 字數 1590 閱讀 9317

原因:會複製多個ui,導致頂點和顏色增加,導致重繪負擔大

建議:動態的ui盡量少用,靜態ui適量

原因:假如ui量多,setactive()會導致開銷大,還有**開銷

建議:設定scale = 0 或 alphagroup = 0;這兩種方式不會導致頂點重建。適用於靜態ui,不會生成四邊形,能減少場景中的頂點數,不會觸發 啟用和禁用的額外開銷。

注意:不能用 color.a = 0,因為drawcall和overdraw不會變化,仍會畫到場景裡面。

(1)自動調整渲染順序,合併drawcall

(2)分層合併,不同層,draw合併概率小

(3)製作影響

a.不規則圖示,image重疊,如六邊形的icon等,導致drawcall沒辦法合併,因為ugui有層的概念

b.ui元素旋轉,判斷重疊,因為所有ui是個四邊形框

c.動態遮擋;加入某個ui因為放大導致遮擋到其他ui,drawcall會增加,因為渲染順序是通過ui牌型進行的

d.3d ui方面,更要注意旋轉的問題,也會出現ui重疊的問題

(1)canvas.buildbatch 這個方法占用的資源多,表明網格更新占用資源多。(unity5.2 以後網格合併走子執行緒)

(2)合併網格時,所有ui會合併在所屬的canvas裡面

影響:canvas下幾何比較複雜時,動態元素的變化會導致很大的開銷,任何元素的變化會導致canvas網格重新合併

建議:拆分canvas,分靜態canvas和動態canvas。動態canvas指包含需要頻繁變化ui的canvas

(1)功能介面的drawcall

(2)功能介面的網格更新

(3)動態hud介面的網格更新控制(血條)

(4)堆記憶體控制

(1)觀察profile,抓住開銷高峰期進行分析優化

(2)drawcall 的控制

a.合併drawcall,只合併相鄰元素和材質相同元素,位置的z值不一樣也會打斷drawcall,一般在3dui上出現多,2d調整z值也會影響,即使表面看起來ui並沒有任何變化

b.在hierarchy介面,ui的穿插和重疊會導致drawcall多。建議:所有相同材質/圖集 的ui放到同一節點下面。drawcall就會合併

c.圖集分離:原始圖集紋理,若壓縮格式不一樣,會被拆分成不同的圖集,也會導致drawcall多

(3)mesh.createvbo :雖然是網格重建引起,但也算渲染開銷

(4).overdraw:cpu上無影響,gpu上有影響,簡單來講overdraw就是乙個畫素在螢幕繪製的次數,越高占用的資源越多,效率越低

a.減少ui層疊

b.遮擋場景時,關閉攝像機

c.沒用ui(image)的事件檢測時,把raycast target 設定為false

(1)動靜分離,拆分canvas(前面有提到)

(2)降低更新ui的頻率

a.設定移動閾值

b.設定更新頻率

例如,在小地圖上,當移動位置大於某個值時才更新位置;每過1s才更新一次小地圖資訊

(3)避免「敏感」操作

ui元素position的更新會導致canvas.buildbatch 重繪網格,即使賦值的位置跟之前一樣。建議有保護機制,當位置有變化時才賦值

Unity UGUI煙霧效果

效果 如下 shader ui unlit addflowtex color tint color 1,1,1,1 materialtoggle pixelsnap pixel snap float 0 ui stencilcomp stencil comparison float 8 stenci...

unity ugui縮放 移動

乾貨羅列在前,不願意看的,拿東西走人,自己研究 關於ugui的排版方面,剛上手的時候,覺得 哎喲!不錯,這個刁。但是如果你使用過qt等軟體,其實ugui的對齊功能還是很落後的。如果你繼續使用這個排版功能,你就會發現 什麼啊這是,什麼邏輯啊,完全沒懂啊。如何修改ugui控制項到我指定的大小 如何移動u...

HTML CSS高階學習摘錄(效能優化)(七)

1 盒模型縮寫 border padding margin 2 背景縮寫 3 字型縮寫 font 微軟雅黑 12px 1.5em bold 4 顏色值縮寫 color 000 1 空白符 2 結尾分號 3 url的引號 4 屬性值為0 可不新增單位 5 屬性值為以0開頭的小數 6 合併相同的定義 7...