首先说明,我用的是NGUI 3.7.1版本,只测了这一个版本,其他没有测试过。。。 关于drawcall是什么,姑且理解为GPU为了渲染出我们平常看到的界面而做的一次次刷新界面吧,术语怎么解释,话说我也不太清楚。
好了,进入正题。 今天拿出来上周做出来的项目主城界面,看了看stats,drawcall竟然有10次,我擦,不可忍受,于是开始琢磨怎么减少,在查看各个uisprite之后发现,由NGUI自动给我们生成的depth是不断的给我们+1,+1无限制。。。属于帮我们实现了功能,但是浪费了depth,于是想着开始自己修改各个uisprite的depth,说走咱就走啊~
通过思考得知,同一Panel下,只要两个uisprite不重叠也就是位于屏幕的不同位置,是可以共用一个depth的,于是就按照从小到大的逻辑,位于最下面的uisprite手动设置成0,要覆盖在它上面的就设置成1,再覆盖就设置成2.。。。以此类推,当我把整个界面这样设置完后,发现最高也才用到了4,但是NGUI自动生成的已经到18了。。。。
这个时候运行一个惊奇的发现,drawcall从10降到了4,我擦咧,激动啊!!!!!!!!
|