ngui控制渲染顺序

2015年01月13日 11:10 0 点赞 0 评论 更新于 2025-11-21 14:14

一、渲染顺序的重要性

在Unity 3D(U3D)中,渲染是有特定顺序的。而NGUI的渲染顺序可以由开发者进行控制,合理控制NGUI的渲染顺序对于优化DrawCall至关重要。DrawCall是指U3D使用特定材质/纹理进行一次渲染的过程。有效的渲染顺序控制能够减少DrawCall的数量,从而提升游戏的性能。

二、DrawCall的产生机制

一个DrawCall代表U3D使用某个材质/纹理进行一次渲染操作。例如,当一次渲染中有3个对象,如果这3个对象都使用同一个材质/纹理,那么只会产生一次DrawCall;但如果这3个对象使用不同的材质/纹理,就会产生3个DrawCall。

举例说明

假设有对象A、B、C,A和B使用材质1,C使用材质2,那么会产生多少个DrawCall呢?这里存在两种情况:

情况一:3个DrawCall

  • A:材质1
  • B:材质2
  • C:材质1

在这种情况下,由于对象的材质使用顺序较为分散,每次遇到不同材质的对象时都会产生一个新的DrawCall,所以总共会产生3个DrawCall。

情况二:2个DrawCall

  • A:材质1
  • C:材质1
  • B:材质2

当A和C使用相同材质且连续渲染时,它们会被合并为一个DrawCall,而B使用不同材质,会单独产生一个DrawCall,因此总共产生2个DrawCall。

三、Unity的渲染规则

Unity默认会按照控件的Depth来进行渲染,渲染顺序是从后往前。当使用相同材质的控件连续渲染时,它们会被合并为一个DrawCall;如果遇到与前一个控件不同材质的控件,则会重新产生一个DrawCall。这就是上述例子中出现不同DrawCall数量的原因。当同一个界面中存在更多控件时,这种因材质使用顺序导致的DrawCall数量差异会更加明显。所以在进行UI制作时,开发者需要特别关注控件的材质使用顺序和Depth设置,以优化DrawCall,提高游戏性能。