用NGUI做界面的时候发现不注意GameObject(或者说Widget)的depth的话,单独运行界面时,Draw Calls挺高的;

网上搜了一下,大把的博客说的都是类似以下的原则:

(PS:以下1、2摘自http://blog.csdn.net/monzart7an/article/details/25212561)

1、同一个UIPanel下的texture和font尽量放在同一个atlas下。也表达了另外一个意思,使用同一个atlas的元素尽量放在同一个UIPanel下面。

2、如果一个UIPanel下面使用了多个atlas,那么尽量让使用相同atlas的元素连续,尽量避免atlas交叉。

初次看有点萌,因为都没说到具体制作时需要怎样的思路,自己动手了之后就大致了解了。

用NGUI做界面的时候,可以按照这样的思路(如果有更好的,欢迎指教一下,不胜感激!):

假设有A、B(其中可以包括字体)两个atlas(实际做游戏活应用时可能更多,不过都一样),

给使用A的sprite(或者font)控件的depth划分一个区域,比如从0开始,一直到x(x可以预估实际sprite的数量多少设置);

也给使用B的sprite(或者font)控件的depth划分一个区域,从x+10开始(其实就是要使用不同atlas的sprite或者font控件的depth值不要相交,不要中断)。这样在摆界面的时候就去做这步的优化,以后除非UI大改,否则按照这个规则调depth之后的UI的Draw calls都不怎么需要再怎么去优化了。

05-08 15:41