笔者很久没有更新简书了,因为前一段时间准备跳槽,然后面试,最后入职新公司,所以耽误了更新简书的进度。这次笔者准备更新一个新的系列 Text Mesh Pro,这个字体插件真心不错,已经集成到Unity中,对于开发中很多字体美术效果都有很不错的表现。如果是新项目,笔者建议第一时间使用,不但减少不必要的开发时间(实现各种字体效果),表现效果也很不错。
开发环境
- Unity 2018.4.4
- Text Mesh Pro 1.4
Text Mesh Pro 在线文档
对于第一次使用 Text Mesh Pro 的项目 需要先引入对应的资源。进入 Package Manager中选择Text Mesh Pro ,然后选择最新的版本进行安装


然后导入一些必要的资源(第一项),对于扩展资源可根实际需求进行导入,扩展资源里面有一些示例和对应的资源(代码、材质、预制、设置等)
必要资源

扩展资源

下面我创建一个 Text Mesh Pro 对应的 Text


但是这时有一个问题就是 Text Mesh Pro 所用的字体并不是我们原来常用的ttf字体,而是经过Text Mesh Pro转化的字体 ,所以下面才是本篇的主题:创建字体
打开字体创建工具 选中我们要创建的字体

让我们看一下创建字体工具里面的选项
-
Font Source: 需要制作的字体(需要注意的是,生成含有中文的字体时,首先你选中的字体也需要是支持中文的)
-
Font Size:
- AutoSizing 根据设置的纹理大小自动调整字体的大小(通常选择自动就可以)
- Custom Size根据设置的大小设置字体的大小
-
Font Padding:字体间隔,通常为5(默认)太大会造成单位尺寸上的纹理含有的字数过少,太小可能会使字体上的效果出现叠加的情况
-
Packing Method
- Fast 会使用较小尺寸的字号,但是生成速度快
- Optimum 会使用更精确的字号,但是生成速度慢很多。(一般正式版出包时会使用此模式生成)
-
Atlas Resolution 生成字体纹理的尺寸,纹理越大,字体越精细,生成速度和纹理大小也随之增加
-
Character Set:预设包括ASCII和扩展ASCII字符集,全部大小,全部小写,和数字加符号,也可以使用十六进制数字的十进制来指定字符范围。或者明确列出每个字符。



-
Custom Characters 可以继承原有字体中的字符,然后自己再另行添加新的字符
-
Characters from File 笔者用的就是这种模式,从指定的字符Txt文件中获取对应的字符然后生成字体
-
Render Mode 选择默认就好(SDFAA)关于其他请参考:https://forum.unity.com/threads/docs-sdfaa_hinted.656401
-
Get Kerning Pairs?可以选择从字体中复制字距调整数据。该数据用于调整特定字符对之间的间距,以产生更加视觉上更好的结果。请注意,许多字体没有字距调整对。(不是很明白文档说得东西)
这是在Font Asset中放入我们生成的字体就可以了

上图我们可以看到 特殊字符@和对应的汉字重叠了,对于这种字符显示不准确,位置偏差的情况我们需要在生成的字体文件中调整一下


对于一些编码映射对应的表情和字符出现错误,也可以在字体文件中对应的调整

创建字体先讲到这

网友评论