unity粗体字+android,[Unity] UGUI加粗字体小记
不同字体无法合批前段时间看一个新系统的UI DrawCall时,发现有几个同Depth的粗体字跟非粗体字没有合批,感觉非常奇怪。然后看了下Text组件的设置,发现这位同学做粗体效果时拖用了msyhbd的字体,而普通字用的msyh字体。这里说明下两个字体的关系,msyh是不支持粗体的字库,而msyhbd就是msyh缺少的粗体字库。我们做粗体效果,都是Text组件的Font Style选项设置为Bol
不同字体无法合批
前段时间看一个新系统的UI DrawCall时,发现有几个同Depth的粗体字跟非粗体字没有合批,感觉非常奇怪。然后看了下Text组件的设置,发现这位同学做粗体效果时拖用了msyhbd的字体,而普通字用的msyh字体。
这里说明下两个字体的关系,msyh是不支持粗体的字库,而msyhbd就是msyh缺少的粗体字库。我们做粗体效果,都是Text组件的Font Style选项设置为Bold。在Unity5.4版本里,只有msyh字体的话在Android设备上粗体效果会显示错乱。因此,我们在项目里又加了msyhbd修复这一问题(解决方案源自上面的参考文章)。顺便一提,Unity2018.4中没有msyhbd也能保证Android设备粗体效果正常(亲测)。
针对上面的情况,做了个小实验(U5.4环境),结果记录如下
Text字体
设置(FontStyle)
效果
能否合批
msyh
Normal
普通
能
msyh
Bold
粗体
能
msyhbd
Normal
粗体
不能
msyhbd
Bold
粗体
不能
上面表格中“能否合批”是指,同Depth的所有Text组件能否合批。当然,上面表格,跟前面这句话都不够严谨。在msyh + Bold设置能满足效果的情况下,所有的Text组件只会使用msyh一个字体,自然它能够合批。
最终的一个小结论:直接引用同一个字体的Text是可以合批的,跟它实际内容来源于哪个字体无关。
最终内容都来自msyhbd的情况下,使用Bold选项能保证合批,我们猜测是fallback机制的功劳。
更多推荐
所有评论(0)