有一个选关场景,drawcall 400+ ,请教问题出在哪里?

微信小游戏有个选关场景,总共200关,
我是把每一关做成一个prefab了


代码是
start () {
cc.loader.loadRes(‘prefabs/stage’, (error, prefab) => {
for (let i = 1; i < 201; i++) {
let stage = cc.instantiate(prefab);
stage.level = i;
let nodeNumber = stage.getChildByName(‘stageNumber’);
nodeNumber.getComponent(cc.Label).string = i;
this.stages.addChild(stage);
}
});
}

drawcall 407,fps 60左右。怎么能降低dc呢?

字体用的系统字体,
把底图换成一个图片,字体换成艺术字,使用自动图集功能,把这个图片和艺术字打在一个图集里,理论上可以降到几个drawcall

关卡数字变成位图然后让关卡数字和关卡底图在同一个图集里

这样算一下,算你没有加载关卡节点的时候 drawcall是5,然后算你加载一个节点是一个背景+一个label,那就是+2, 以此累加……………………

你的prefab里包含文字和图片,文字是会打断渲染批次的
建议:
1.数字用bmfont;
2.不要一次性加载所有关卡,参考CocosCreator ScrollView 性能优化技巧,或者官方范例里也有类似的

你好,
关卡数字变成位图意思是用bmfont吗,我用bmGlyph生成的bmfont,背景图集用Shoebox生成的,
怎么能把两个放一起?

你好,
关卡数字变成位图意思是用bmfont吗,我用bmGlyph生成的bmfont,背景图集用Shoebox生成的,
怎么能把两个放一起?

BMFont 与 UI 合图自动批处理

谢谢你的回复!
用bmGlyph生成bmfont,再设置自动图集,drawcall降到9了。
预览还是400多,调试模式到发布到微信开发者工具看就是9了。