吐个槽
游戏内用到很多种fnt字体,每个字体纹理都不大,一张张放着浪费,所以想办法做二次合图,节省内存.
项目的所有字体纹理合集用 2048尺寸差不多刚刚好
第一个办法直接简单
所有字体拷贝到一个fonts目录下,设置自动图集配置AutoPac,构建运行,运行不报错,但是所有的字体显示都错乱了。
第二个办法
构建以后,写个脚本,把jsb-default/res/raw-assets/fonts/resources/fonts 目录的png全部合成一张图(fnt文件会被creator序列化成json文件,文件名也改的不认识),然后去res/import目录(从1800+json文件内容里搜索)搜索匹配对应的fnt原始文件内容,修改,保存。运行报错,然后又去修改对应的SpriteFrame json文件,运行,继续报错,前后检查几遍,发现貌似得修改settting.jsc,只得放弃,抓狂!
第三个办法,跟第二个办法原理类似,只不过这个是构建前操作。
写了脚本
- TP把所有fnt对应的png合成一张纹理 fonts.png fonts.plist
- 解析plist,修改fnt文件内容:修改file、scaleW/scaleH以及每个字符的x/y偏移值,保存新的fnt
3.去掉之前生成的fnt同文件名png图,只用一张fonts.png
运行以后在浏览器和creator编辑器上一切显示如预期效果。字体显示都正常。但运行真机(PC模拟器),发现全部只显示一种字图,空格丢失。 检查fnt修改记录,也没发现明显问题, wtf!
官方有空检查下这个问题吧,移动、浏览器总是有点什么差异,这难道是2dx的包袱?
吐槽一点,搞creator,稍微抄点小道就翻车。
[假装有一张老罗打自己脸的动图.gif]