NGUI和UGUI的渲染方式是不同的,UI界面的拼接也是有差别的,這裡就隻說NGUI拼接UI界面相關的事項
一.NGUI中的drawCall統計規則:
(1)一個UITexture就是一個單獨的drawCall
(2)每個Panel就是一個drawCall
(3)相鄰的depth的相同圖集 合成一個drawcall(如果相鄰的depth使用不同的圖集,drawcall不能合并,每個圖集就單獨計為一個drawcall)
二.NGUI中的重新整理規則:
(1)首先對UiPanel,按照depth進行排序
(2)然後對每個panel下的UIWedget按照depth進行排序
(3)NGUI的渲染是在“透明度”序列中(即 Transparent,渲染順序是從後往前渲染 )
(4)depth越小,越先渲染,depth越大越後渲染:是以在螢幕上看到的結果是depth最大的在最上面
三.如何調試和确認NGUI中drwacall存在的問題:
請參考如下網址的内容
https://zhuanlan.zhihu.com/p/66720884
四.優化建議:
(1)拆分Panel。多添加一個panel會多增加一個drawcall,但是會減少界面中mesh重建渲染線程的壓力,避免整個UI界面的重建(僅僅重建此panel下的内容)。多增加一個drawcall ,減輕渲染線程的壓力!!!!!!!!!!!!
(2)避免depth的打斷。相鄰的depth,使用相同的圖集,中間不插入其他圖集,保證drawcall的合并。
(3)z值的大小不會影響渲染的順序,請留意。
(4)動靜分離。不會改變的UI設定為static(有風險請慎用)