UI優化策略 網格重建

2022-03-22 09:25:04 字數 1150 閱讀 1611

原文:

基於以上ugui的網格更新原理,我們可以做以下優化:

1:使用盡可能少的ui元素:在製作ui時,一定要仔細查檢ui層級,刪除不必要的ui元素,這樣可以減少深度排序的時間以及rebuild的時間。

2:減少rebuild的頻率:將動態ui元素(頻繁改變例如頂點、alpha、座標和大小等的元素)與靜態ui元素分離出來,放到特定的canvas中。

3:謹慎使用ui元素的active操作:因為它們會觸發耗時較高的rebuild。

4:謹慎使用text的best fit選項:雖然這個選項可以動態的調整字型大小以適應ui布局而不會超框,但其代價是很高的,unity會為用到的該元素所用到的所有字型大小生成圖元儲存在圖集裡,不但增加額外的生成時間,還會使得字型對應的圖集變大。

5:謹慎使用canvas的pixel perfect選項:該選項的開啟會導致ui元素在發生位移時,其長寬會被進行微調(為了對齊畫素),從而造成layout rebuild。(比如scrollrect滾動時,會使得canvas.sendwillrendercanvas消耗較高)

6:使用快取池來儲存scrollview中的item:對於移出或移進view外的的元素,不要呼叫disable或enable,而是把它們放到快取池裡或從快取池中取出復用。

7:除了rebuild過程之外,ugui的touch處理消耗也可能會成為效能熱點。因為ugui在預設情況下會對所有可見的graphic元件呼叫raycast。對於不需要接收touch事件的grahic,一定要禁用raycast。

我在原作者的基礎上做了以下補充。(何文西)

補充第3個條:僅啟動/禁用畫布渲染元件,這樣ui不被渲染,但是它會保留持久化的資料(例如vbo資料)。但是注意,這不會從graphicregistry中消除ui圖形,所以它會在圖形射線檢測時仍起效。

8:謹慎使用布局元件(layout components):因為每次標記dirty時,它必須重新計算子元素的大小和位置。如果布局上有相對小和固定數量的元素,並且布局結構相對簡單,那就盡可能用基於recttransform的布局替換布局元件。因為recttransform大小和位置的計算會由ttransform系統自己在本地驅動,這通常會比依賴元件系統的效能更高。

9:scrollview滑動問題:未開啟pixel perfect的時候,scrollview滑動不會有任何重建和開銷。

網格合併優化

合併網格之後發現用來合併的網格在場景中也占用乙份記憶體,也就是說一共占用了兩份記憶體。如下 private void combinemesh listmeshfilters m terrainmeshcombine new gameobject terrainmeshcombine m combin...

Android優化 ui優化

一 ui優化,去除冗餘層級 1 父容器選擇,避免多餘巢狀。2 merge include viewstub標籤使用 2 當應用include或者viewstub標籤從外部匯入xml結構時,可以將 被匯入的xml用merge作為根節點表示,這樣當被嵌入父級結構 中後可以很好的將它所包含的子集融合到父級...

機房UI優化

機房重構已經進行了半個月了,剛開始的時候是很期待的,因為這次是c 語言的重構,很想看看物件導向技術在機房重構的應用。這次機房一邊實現功能,一邊進行優化。1.對主窗體的優化 1.首先主窗體沒有採用之前的敲vb的時候用的mdi窗體,因為mdi窗體優化起來比較死板。所以這次用的就是普通窗體。2.首先是整個...