unity脚本显示为杂项文件_解决 Unity 自定义字体垂直对齐问题

841349c7f5e7f266b7211d0102b2843e.png

游戏中经常使用一些自定义字体以搭配游戏风格,Unity 是支持创建这样的自定义字体的。先让美术画好字符图集,导入 Unity 后创建字体材质,然后创建一个 Custom Font 资源,引用字体材质,设置好字符矩形和其他属性就可以用了。

279f59ad61abff84b73725b4043a4313.png
Unity 自定义字体 Inspector 界面,其中 Character Rects 是所有字符的 UV 和显示矩形等参数

但是,由于 Unity 的字体系统存在 Bug,导致自定义字体无法正确的垂直对齐。为了解决这个问题,建议你先阅读 Unity 相关文档了解一些基本概念,然后再看这篇文章。

33d7b4156e12621fa7f2f5c293913c7a.png
字体 Ascent 和 Descent 的说明

如上图所示,Base Line 是字符垂直方向的基准线,以英文字符为例,大写字母的底部一般就是 Base Line 的位置。Ascent 指字符顶部距离 Base Line 的距离,Descent 指字符底部距离 Base Line 的距离。

Unity 自定义字体垂直对齐不正确就是因为 Ascent 和 Descent 没有正确设置引起的。要想修复这个问题,首先你需要保证你的项目已经设置为使用文本方式序列化,然后使用文本编辑器打开自定义字体资源文件(后缀名为 fontsettings),先找到 m_FontSize 字段(应该位于文档开头部分),将其值改为字符图集中设计的字体大小;然后找到 m_Ascent 和 m_Descent 字段(应该位于文档底部),将其改为设计的距离值,注意 m_Descent 必须为负数,且 m_Ascent + (-m_Descent) = m_FontSize。

此时使用字体的话,会发现垂直对齐还是有偏移,因为字符的显示矩形还没有正确设置。

12f6b1dfeaddd9580368d13a7588555d.png
CharacterInfo 中定义的显示矩形图示

因为字符较多,建议通过脚本修复字符显示矩形。如上图所示,CharacterInfo.minX、CharacterInfo.maxX、CharacterInfo.minY、CharacterInfo.maxY 定义了整个字符相对显示点的位置。为了保证最佳效果,maxX + (-minX) 应该等于设计的字符宽度,maxY + (-minY) 应该等于设计的字符高度。其中,maxY 应该等于字体的 Ascent 值。

文章头图就是修复好的自定义字体,在垂直方向上分别顶部对齐、居中对齐和底部对齐的效果。完成这一切后,你还会发现你的自定义字体获得了一个额外的功能,就是可以在 UI Text 组件上调节字体大小了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值