UGUI性能優化


UGUI會自動檢測優化,如果多個材質間沒有遮擋或只有小部分不影響的遮擋則會合並DrawCall為一個。如下圖:

  1. 盡可能保證Text在Image的上方。字體的DrawCall就可能自動會優化,而不需要像NGUI那樣讓字體跟圖片pack在一起來減少DrawCall。
  2. 盡可能保證Image之間不存在不必要的重疊。

UI變色:修改材質和修改頂點色兩種方式

  1. 合並DrawCall一定要是相同的材質,修改材質會將本來已合並的DrawCall分離開,就導致了DrawCall的增加及Canvas的重建。
  2. 修改頂點色(Button中Transition中的ColorTint方式)只會修改Canvas中的數據。

UI邊框:Sliced & Fill Center

  1. Sliced模式的Sprite更節省紋理尺寸。
  2. 中空的邊框不應該勾選Fill Center,可減小Fill rate。

Mask的代價,通過Stencil buffer實現

  1. 移動平台需要Use 24-bit Depth Buffer(Tegra GPU 2、3上不支持,4支持)。
  2. Mask中的UI元素無法與其他batch,從而增加DrawCall。
  3. 可以的話嘗試用Filled Sprite代替。

動畫:Text vs Image

  1. 如果Image上做了動畫則Canvas需要重建,Image的頂點數一般不會很多,開銷不會很大。
  2. Text與文本內容(生成的網格數)相關,如果文字比較多則相比Image開銷可能會翻倍。

Canvas的重建主要就是為了合並DrawCall,可以將有動畫的文字放在單獨的Canvas中去,手動分離DrawCall(增加DrawCall)后就不會再要去跟別的文字作合並,該Canvas就不需要再重建故減少了重建開銷。

盡可能使用緩沖池。如人物身上的傷害數字,生成時會有較大的開銷因為有Mesh的生成等過程。

 

unity官網對性能優化的建議,干貨,比較實用,建議都看一下:https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-optimizing-unity-ui?playlist=30089

翻譯:

http://www.manew.com/home.php?mod=space&uid=105915&do=thread&view=me&from=space

以上鏈接中的系列文章:UI 優化指南,UNITY UI 基本原理, Unity UI分析工具, 填充率,畫布和輸入, 優化UI控件, 其他的UI優化技術和技巧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM