cocos creator2.3版本材质合批渲染不能降低drawcall

用2.3.0和2.3.1版本的,3D模型使用新建的材质球,勾选合批渲染后,drawcall没有降低,调试时进源码看到,_enableAutoBatch属性还是false;
在代码中实例化预制件后,将它的所有网格组件的EnableAutoBatch属性赋值为true,进源码看到_enableAutoBatch值确实改过来了,但drawcall还是没有降低,截图中canBatch为true,_primitiveType为4,

做了实验,用cocos默认的材质球,合批可以降低drawcall;
自己新建的材质球,属性设置与默认材质球是一样的,只是多了一个漫反射贴图;

求大佬们指点,这问题该怎么解决,谢谢

死磕了一天,得出结论:
预制件中,一个节点下的多个子节,使用了不同的材质时,合批无效!

如果没记错,不同材质本来就不能合并dc

没记错。
但是我遇到的情况是,一个节点下有子节点A和B;A用了材质a,B用了材质b,两者的MeshRenderer都勾选合批,将这个节点拖成预制件,实例化一百份,就会有两百dc了,
如果把A和B节点分别做成预制件,合批就有效了。

想问问题主3D模型的合批只是勾选EnableAutoBatch就可以了吗?还有其他操作吗?
我也试过用cocos默认的Cube做测试,依然是一个Cube一次DrawCall

默认的 Cube? 我这边使用Box做了验证,勾选合批就会合批的,你可以提供个demo,我们看下问题。

DrawCallTest.zip (1.0 MB)
感谢大神帮忙

有没有可能你的摆放位置不对?A和B是交替摆放的?

数一数DC,是合并了的!

我这边显示的Drawcall是13…

更新到2.3.3版本,再看看效果怎么样~

合批,是将节点按节点树中的顺序从上到下,当相邻的节点使用的材质是一样时,就可以将它们的顶点一起提交给显卡渲染,所以有使用不同的材质球的节点出现时,就会打断合批,所以我遇到的问题,是因为预制件中有两个MeshRenderer组件,且其使用的材质球不同,所以无法合批。
综上,要想合批有效,节点树中就不要在使用相同材质的节点之间出现使用不同材质的节点

更新到2.3.3版本了,还是不能合批

用浏览器预览时能合批,用模拟器预览时不能合批。
平时为了看Log基本都用模拟器预览,以后预览还是两模式都试试比较好:joy:
谢谢各位大侠的帮忙

相同材质节点需要连续,中间穿插和批无效

浏览器看log不爽吗

爽,感谢提醒