cocos creator 2.0.10制作成语游戏,drawcall太高

太多汉字了,没法打成bm字体,该怎么弄,游戏界面drawcall有100多

怎么能降低drawcall

升级到2.0.9及以上版本,启用label cache mode

我是用2.0.10开发的,还启用了Cache Node,选CHAR或者是BITMAP,drawcall都没降什么

可能你需要打包之后看看

我们正在开发的产品也是很多汉字,用的2.0.10, cache mode 选 CHAR , drawcall 能降低到10 ~ 20 + 。 我们一般有5个段落,每个段落用一个label渲染,每段有20多个汉字。

微信开发者工具上,看不出什么效果吗

另外需要警惕的是,我之前帖子里面遇到的问题,你要换几个手机试试,尤其用新的没安装过你们软件的手机。 参与过曾经版本测试的手机,有时候似乎creator的内核不能正确更新,导致drawcall无法降低下来。新参加测试的手机就没问题。

我的就是这些字,

谢谢,我先试下。

你这种是不是背景 + label是一个节点导致合批打断导致的?

是的,并且我背景和文字还是不同的预制体,并且文字预制体里面还有label和sprite节点

那就看看能不能重新管理一下节点,考虑分层的方式,不过管理会麻烦点,dc会降低

自己打断的合批,就得自己给弄回去

分层的方式是啥。。 我写的游戏也是这种情况。。。 文字label下有个背景图,是一个prefab。。。 draw call就很高。。

有什么好的方式解决么?

这种游戏,位置关系很简单死板。分两层或者三层就可以了。底层放文字背景。上层放Label
只要位置同步就好了。
比如说 要生成一个 汉字:抽 在 x:1,y:1上。那么bg放bgLayer, label 放 charLayer .移除同时移除。更新状态有索引就能更新啦。
亦或者。九宫格,charLayer就9个label,bgLayer 也就九个bg。整个 游戏的bg和char用一个二维数组保存。对应九宫格,数据改变了就刷新一下数据就ok啦
。或者哪个格子的数据改变了就更新哪个格子咯(MVVM的方式)

卧槽。。 那太复杂了吧。。。 而且太不优雅了。。。 改个设计 改个逻辑不烦死了么。。。 :sweat_smile:

可以试试这个
https://forum.cocos.com/t/ui/80026

虽然不能优化Label的drawcall,但是可以让同样的节点同层级ui批量渲染,而且还不用修改节点的层级关系。

看起来好牛逼,新手表示非常有难度。。。 看不太懂。。。
有简单点儿的方案么。。
比如针对很特定的场景,一个prefab表示一个节点树,同prefab最多节点树层级个draw call?
直接在prefab上就设置合并draw call这种。。。

我之前玩的时候 label cache mode 记得是要打包之后才会生效的