引擎版本 3.8.0
没换层级前只有5个dc
换完之后直接500了
下面是代码截图
多人测试过都有问题,这难道不是bug么 ????
改一下BATCHER2D_MEM_INCREMENT就好了,至于为什么没改之前不切换层级dc是低的,需要有心人研究一下Batch2D
macro.BATCHER2D_MEM_INCREMENT = 412
@ccclass('NewComponent')
export class NewComponent extends Component {
@property(Node)
item: Node = null!;
那这合批是有bug了。@官方
当Sprite过多时, 默认的 StaticVB 就装不了,会创建新的 StaticVB 来装。
比如,有 StaticVB1 … N
当顺序不变时,假如每一个 StaticVB 装100个,那 5 个DC 可以绘制完。
但当你突然更换了顺序时。 StaticVB 的绘制顺序就乱了,就不能合批了。
解决办法就是 macro.BATCHER2D_MEM_INCREMENT 这个值加大。 最大可以 2303.
这样,一个 StaticVB 就可以绘制完所有的 Sprite。
这个不是引擎BUG,是设计如此。
引擎为了降低空包测试时的开销,这个值给得比较小,普通项目都能满足。
对于需要使用大量Sprite的项目,这个值可以给大些。 内存开销不大,可以忽略。
staticVB不会重置吗?那么有手动重置的接口没有?他现在这个情况,改下macro.BATCHER2D_MEM_INCREMENT就行了。但是如果以后有谁的项目中,总的sprite的内存占用数量超过最大值,还是会有这个情况出现。至少可以用个代码让StaticVB重置一下吧