
这图是 官方自己 CacheMode = char 模式下创建了一张图集,官方的算法是平移 ,然后根据当前这一行高度最高的那个字,进行换行,有点效率高,缺点如果一行字中有一个字特别大,那么换行的时候就会有对应的空间浪费。
在官方的基础上,设置了几种其他模式 ,缺点 性能会弱一些,有点,能够提高5-25% 的空间效率,将更多的文本放置在同一张图集里面
效果:
修改的地方在font-util.ts 那边

这图是 官方自己 CacheMode = char 模式下创建了一张图集,官方的算法是平移 ,然后根据当前这一行高度最高的那个字,进行换行,有点效率高,缺点如果一行字中有一个字特别大,那么换行的时候就会有对应的空间浪费。
在官方的基础上,设置了几种其他模式 ,缺点 性能会弱一些,有点,能够提高5-25% 的空间效率,将更多的文本放置在同一张图集里面
效果:
修改的地方在font-util.ts 那边
代码呢?是不是少了什么呢?
这个绿框是怎么显示出来的呢,请教下
在引擎的Label 实现里面 找到labelLetter 图集,获取getAssemblerData 然后自己创建一个spriteFrame
把texture 赋值过去就好 。
至于要怎么显示 就自己创建一个sprite 赋值这个spriteFrame
就好
直接

是要在引擎的label里添加方法吗?不知道这个怎么去调,以前2.x版本直接有_shareAtlas这个参数了
这个 maxRectsPacker 需要将 gitee 上的源码引入到 引擎中吧?
还有使用
const rect = this.maxRectsPacker.add(width, height, letterTexture);
if (rect.oversized){ xxx }
后续的判定代码是什么?
从场景上拿一个Label 组件(cacheMode是char的),假设是labelCom
Label.Assembler.getAssembler(labelCom).getAssemblerData() 就是letterAtlas
谢谢分享,有没有 2.4版本的 希望题主给个思路 或者能出个 2.4.x 版本的
后续代码跟 引擎保持一致 ,所以就没贴了
暂时没有2.4 ,只做了3.7版本之后的
是LetterRenderTexture 吧, 不是letterAtlas