-
UI动静分离
什么是UI动静分离?
动指的是元素移动,或放大缩小频率比较高的UI,静就是静止不动的,或者说动的比较少的UI。
那么为什么要将他们分离开来呢?
UGUI 和 NGUI一样,都是用模型构建UI画面的,在构建后都做了合并Mesh的有优化操作,不合并会导致无数 drawcall进而导致GPU队列阻塞或消耗加大,游戏性能降低。
合并操作是有极大益处的,但问题在于UI元素一动就需要重新合并,将那些原本不需要重新构建的内容也一并重构了,导致原来合并Mesh的好事变坏事。
因此要将行动的UI元素和静态不动的UI元素分离开来,让合并的范围缩小,只合并那些会动的UI元素,因为他们重绘的频率比较高,而那些基本不动的UI元素就不让它们参与重新合并Mesh的操作了。
如何分离他们呢?
UGUI 和 NGUI都有自己的重绘合并节点,我们可以称它们为画板,UGUI是Canvas,NGUI是UIPanel。
以画板为节点进行拆分。把会动的UI元素放入专门为它们准备的合并节点上,而将静止不动的UI留在原来的合并节点上。
这样一来,当会动的UI元素来回移动缩放的时候,不再会重构静态部分的UI了。在实际项目中静态的UI元素占UI的数量比较多,而动态的UI元素只是小部分。动静分离后,减少了不少的CPU在重绘和合并时的消耗。