Label 选择char模式bug

  • Creator 版本: 3.3.0

  • 目标平台:chromePC浏览器

  • 重现方式:循环创建大量不同中文文本的label节点,label选择char模式,显示后删除节点,次数到达一定量后必现。

  • 首个报错:The font size is too big to be fitted into texture atlas. Please switch to other label cache modes or choose a smaller font size.
    Uncaught TypeError: Cannot read properties of null (reading ‘atlasName’)

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:100%

原理类似 BMFont,Label 将以“字”为单位将文本缓存到全局共享的位图中,相同字体样式和字号的每个字符将在全局共享一份缓存。能支持文本的频繁修改,对性能和内存最友好。不过目前该模式还存在如下限制,我们将在后续的版本中进行优化:
1、 该模式只能用于字体样式和字号固定(通过记录字体的 fontSize、fontFamily、color、outline 为关键信息,以此进行字符的重复使用,其他有使用特殊自定义文本格式的需要注意),并且不会频繁出现巨量未使用过的字符的 Label 。这是为了节约缓存,因为全局共享的位图尺寸为 2048 * 2048 ,只有场景切换时才会清除,一旦位图被占满后新出现的字符将无法渲染。
2、不能参与动态合图(同样启用 CHAR 模式的多个 Label 在渲染顺序不被打断的情况下仍然能合并 Draw Call)
3. 该模式在 原生平台 上使用 FreeType 渲染。

https://docs.cocos.com/creator/manual/zh/components/label.html?h=char

谢谢,那只能换不缓存的模式了

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。