Cocos: 3.8.0创建多了 label 时,使用 char 缓存模式,图集过大报错

label 的颜色值会随着点击变化,其他属性无变化,在动态创建多个 label时,使用了 char 缓存模式,为了降低 DrawwCall,但是会出现报错情况,大概确认时图集满了(1024*1024), 报错信息如下:
(C:/ProgramData/cocos/editors/Creator/3.8.0/resources/resources/3d/engine/native/cocos/bindings/jswrapper/v8/Object.cpp, 754): Invoking function failed, TypeError: Cannot read property ‘atlasName’ of null
at sD._multilineTextWrap (src/cocos-js/cc.js:1:813579)
at sD._alignText (src/cocos-js/cc.js:1:812466)
at sD.processingString (src/cocos-js/cc.js:1:803028)
at Object.updateRenderData (src/cocos-js/cc.js:1:820578)
at t.updateRenderer (src/cocos-js/cc.js:1:670110)
at Object.updateAll

有什么好的解决办法嘛?

是原生安卓游戏,不开缓存的话DrawCall 感觉很高,200多了

原生的情况下:

1.试试用SDF,打个大字库,不过可能会打断draw call
2.你自己重写管理引擎的字库存的缓存表,做好增册改

H5和微信小游戏:

可以考虑多纹理合批
就算Label不开缓存模式,也能很好压制draw call

体验和获取:98高性能多纹理合批

好的,感谢 :+1:。我试试

可以修改图集缓存的尺寸么?从1024 修改到 2048?

你可以试试,这样改,简单

欧克欧克。我试下