界面操作一般會觸發UI的開關或者隱藏顯示,必然會造成UI重建。
1.避免Active 和DeActive ,而采用控制Canvas組件的激活與關閉。
2.不需要參與點擊事件的Canvas取消激活Graphic Raycaster 腳本。
3.僅用於顯示的圖片或者文本禁止勾選Raycast Target 腳本。
4.持續性的UI動態效果特效,最好采用特效的方式制作,脫離UI系統。
5.動態合靜態的UI 要分開,分別掛上canvas。
6.適當對UI界面做緩存,保證再次打開更快。
7.界面初始化代碼部分加上Profiler監測,統計代碼效率。
8.將復雜的界面拆成多個界面,比如Tab頁點擊切換時再動態加載。
9.控制一幀內加載UI的數量,做好分幀加載策略。
對比全屏界面的UI界面。 可以關掉3D攝像機,沒有3D部分的渲染,效率必然會提升。
戰斗潔面奶是戰斗時玩家可操作的界面,也是游戲中最敏感的界面,只要一丁點的額卡東玩家就能明顯感知到,假設游戲戰斗保持45FPS,那么留給每一幀的時間只有22ms,留給UI的只會更少。
1、通過Profiler查看UI的渲染耗時,到底是卡在GPU還是渲染上。
2、左邊接受任務框或者右上方活動的UI轉圈動畫,最好用粒子特效來做。
3、頭頂文字稱號和冒血傷害數字(1)最好不要使用UI 系統,使用SprteRenderer 和3DText實現。
(1)使用UI系統的缺陷:攝像機位置角度發生變化需要實時修改UI的位置,必然會造成網格合並,而且UI系統本身效率沒有3D的高。
4、圖文混排聊天,一幀只加載一個,避免消息太多造成卡頓。
5、技能CD轉圈不要每幀都更新,並且套上新的Canvas.
6、界面中顯示倒計時,一般最小單位是秒,最好不要每一幀都計算。
7、戰斗界面上左,上右、下左、下右、中左、中右、中間 都要掛上不同的canvas,避免網格重建影響太多。
8、主界面首次打開如果比較慢,會影響Loading條的等待時間,可以考慮分幀加載UI。
非戰斗界面要比戰斗界面的效率要求低一些,保持在30FPS就可以。
1、非戰斗界面最好設計成全屏UI、打開時將戰斗的Camera隱藏,提高效率
2、重點關注游戲對象的Active和 DeActive的數量
3、界面上顯示3D模型做好分幀加載
4、滑動列表的滑動效率需要重點關注
5、文本組件建議使用Text Mesh Pro