求关于draw call优化的一些建议?

论坛里能看的相关问题基本都看过了,只是找到了dc高的原因,但是并没有一个实际的解决方案,

最常见的场景就是背包了, 一个item node下,里边有一个icon显示图片和一个label显示数量(label上边还有一层底图background用来做数字的底图),这样一来就是3个dc了,理论上来说,icon和和background还有label用的图片字打在一个图集上,dc就可以降为1了,但是实际操作起来非常的麻烦且不合理,假设icon有100个,1个图集只能放10个icon小图,10张图集里还得各自放入数字图片和打底的background?

或者说把这3个元素剥离开来,icon先按顺序渲染一遍,然后是background,然后是label,这样也是相当的麻烦

不知道这里的大大们是怎么解决这个问题的?

另外就是假设有100个道具,1、碎图放在res文件夹下加载 2、打成图集加载, 这两种方案哪种更优呢?

谢谢~:grin:

看到前面有位大神说,只加载显示部分的item,没有显示部分的不加在,重写了scrollview了,好像,思路有了,代码你来处理。

1.1张图集只能10个ICON不太科学吧,正常几十个上百个合一起不会太大的吧,太大考虑下纹理压缩?
2.优化scrollview只加载显示部分,只会影响滚动框性能,不影响dc;
3.优化dc除了合图, 楼主说的元素剥离就是个好办法啊。反正项目基本都要另外写个动态加载优化的滚动控件,不如再花点时间加个分层优化?
4.都是图集处理的吧,好像没遇见过碎图处理的项目; 先不考虑使用碎图加载的程序性能问题与合理性,美术更新维护都是个大问题;
5.道具ICON太多可以分类打成不同的图集,比如任务道具,生产道具等,多多考虑实际中的使用场景(UI),简单点“同一个地方用到的”打一个图集

你这情况, 优化dc不如优化裁剪.
就是背包有100个物品, 其实是全范围有100个, 可视范围可能只有20个, 把剩余80个剔除掉不渲染就行