不同字体无法合批

前段时间看一个新系统的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机制的功劳。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐