Unity TextMeshPro
简介
TextMeshPro(也简称为TMP)号称是Unity的终极文本解决方案,它是Unity 的 UI 文本和旧版文本网格体的完美替代品。
功能强大且易于使用,使用高级文本渲染技术以及一组自定义着色器;提供实质性的视觉质量改进,同时在文本样式和纹理方面为用户提供令人难以置信的灵活性。
TextMeshPro通过字符,单词,行和段落间距,字距调整,对齐文本,链接,30多种可用的富文本标签,对多字体和精灵的支持,自定义样式等功能,提供了对文本格式和布局的改进控制。
出色的性能。由于 TextMeshPro 创建的几何体与 Unity 的文本组件一样,每个字符使用两个三角形,因此这种改进的视觉质量和灵活性无需额外的性能成本。
这段话是官网的简介,直接翻译过来的Unity - 手册:TestMeshPro (unity3d.com)
需要特别注意的是,Unity官方从2021版本开始,删掉了Text,改成用TextMeshPro作为解决方案,也就是你不能直接创建Text来使用了,当然你可以创建个空物体,然后挂载Text来间接的使用,但用起来不是很方便。
所以还是安安心心学习怎么使用TextMeshPro吧,毕竟功能还是很强大的。
使用说明
属性面板
相比Text组件多了很多的功能,这里就简单介绍下多的功能。
官方说明文档:UI 文本游戏对象 |文本网格专业版 |3.2.0-4 之前 (unity3d.com)
Enable RTL Editor
启用此选项可从右到左而不是从左到右显示文本。
检查器会显示一个附加的输入字段,您可以在其中查看反转的文本并直接对其进行编辑。
文本在屏幕上显示或呈现之前被反转。
Material Preset
可以给字体设置材质球,像什么艺术字啥的就可以使用这个来实现。
Font Style
FontStyle变的更加丰富了,是支持多选的。
B | 粗体,黑体 |
---|---|
I | 斜体 |
U | 添加下划线 |
S | 添加删除线 |
ab | 小写 |
AB | 大写 |
SC | 字体全部大写,但是本身是大写的字体会更大点 |
自定义字体
TextMeshPro现在不提供适用于大多数语言的字体了,需要根据自己的需求生成自己所需要的字体。这里就需要使用Unity提供的字体生成工具(Window/TextMeshPro/Font Asset Creator)。
Font Asset Creator
界面:
属性介绍
字体文件(Source Font File)
选择你想使用的字体文件
Windows的字体文件路径:C:\Windows\Fonts
采样点大小(Sampling Point Size)
字体大小(以磅为单位),用于生成字体纹理。采样点大小越高,渲染质量越好,但占用的图集空间更多。
-
自动调整大小(Auto Sizing):尽可能使用最大的磅值,同时仍适合纹理上的所有字符。这是 SDF 字体的常规选项。也就说一般我们选这个。
-
自定义大小(Custom Size):使用自定义磅值实现对仅位图字体的像素精确控制。
填充(Padding)
单位是像素,填充在字体图集纹理中的字符之间。
这个一般使用默认设置就可以了。
打包方式(Packing Method)
-
最佳(Optimum):找到仍适合纹理中所有字符的最大自动字体大小,使用此选项可生成最终字体纹理。最好选择这种方式。
-
快(Fast):更快地计算字符打包,但可能使用比最佳模式更小的字体大小。
在测试字体资源创建时使用此选项。
图集分辨率(Atlas Resolution)
字体纹理的宽度和高度(以像素为单位)。
如果仅包含 ASCII 字符,则分辨率对于大多数字体都很好。具有更多字符的字体可能需要更大的分辨率或多个图集。
对于 SDF 字体,分辨率越高,生成的渐变越精细,因此文本质量越高。
实际使用的过程中,需要根据自己使用的文字多少来选择特定的分辨率,分辨率越大,最后生成的字体文件就越大,会影响包体大小,要根据实际情况来进行判定。
字符集设定(Character Set)
字体文件中的字符不会自动包含在字体资源中。您必须指定所需的那些。您可以选择预定义的字符集,提供要包括的字符列表,或包括现有字体资源或文本资产中的所有字符。
ASCII:在 ASCII 字符集中包括可见字符。
扩展ASCII(Extended ASCII):在 ASCII 字符集中包括可见字符。
ASCII 小写(ASCII Lowercase):在 ASCII 字符集中包括可见字符。
ASCII 大写(ASCII Uppercase):仅包含 ASCII 字符集中可见的大写字符。
数字符号(Numbers + Symbols):仅包含 ASCII 字符集中的可见数字和符号。
自定义范围(Cutom Range):包括您定义的字符范围。
输入一系列十进制值或值范围,以指定要包括的字符。
使用连字符分隔区域的第一个和最后一个值。使用逗号分隔值和范围(例如)。
您还可以选择现有字体资源以包含该资源中的字符。`32-126,160,8230`
统一码范围16进制(Unicode Range(hex)):包括您定义的字符范围。
输入一系列十进制值或值范围,以指定要包括的字符。
使用连字符分隔区域的第一个和最后一个值。使用逗号分隔值和范围(例如)。
您还可以选择现有字体资源以包含该资源中的字符。`32-126,160,8230`
自定义字符(Custom Characters):包括您定义的字符范围。
输入一系列十进制值或值范围,以指定要包括的字符。
使用连字符分隔区域的第一个和最后一个值。使用逗号分隔值和范围(例如)。
您还可以选择现有字体资源以包含该资源中的字符。`32-126,160,8230`
文件中的字符(Charaters from File):在指定的文本资源中包含所有字符。
如果要保存字符集,请使用此选项。
渲染方式(Render Mode)
官方介绍:Unity - 手册:字体资源简介 (unity3d.com)
- SMOOTH或SMOOTH_HINTED将文本呈现为抗锯齿位图。SMOOTH_HINTED字符像素与纹理像素对齐,以获得更清晰的图像。
- RASTER 或 RASTER_HINTE 将文本呈现为非抗锯齿位图。RASTER_HINTE字符像素与纹理像素对齐以获得更清晰的图像。
- SDFAA:使用此模式可为大多数用例生成字体图集,但当您在具有大轮廓的屏幕上渲染大文本(例如超过 90 磅大小的标题)时除外。SDFAA 是动态或动态操作系统字体资产的默认模式,用于快速生成。SDFAA 是一种速度更快但精度较低的 SDF 生成模式。
- SDFAA_HINTED使用此模式可将字符像素与纹理像素对齐,以获得更清晰的结果。
- SDF32:静态字体资源的默认模式。将此模式用于具有复杂字符或小字符的字体。这是一种速度较慢且准确的 SDF 生成模式,具有 32 倍过采样。
- SDF16:将此模式用于静态字体资源和大部分大文本,例如 72 磅或更大的标题。这是一种速度较慢且准确的 SDF 生成模式,具有 16 倍过采样。
- SDF8:使用此模式可生成具有 8 倍过采样的更慢、更准确的 SDF。
- SDF:使用此模式生成更慢、更准确的 SDF,而不会过度采样
获取字距调整(Get Kerning Pairs)
从字体复制字距调整数据。
字距调整数据用于调整特定字符对之间的间距,以产生更赏心悦目的结果。
注意:并非总是可以导入字距调整数据。某些字体将字距调整对存储在其字形定位 (GPOS) 表中,这不受支持。其他字体根本不存储字距调整对。
生成
点击生成按钮(Generate Font Atlas),根据不同的情况生成字体的时间不一样,生成完成之后,保存成对应的字体文件即可。
尾语
建议将官方的例子导入工程中学习学习,里面用法特别多,表现效果也比较好。
如果有写的不好的地方,欢迎各种大佬批评指正。
后续有需要会继续补充。
本不存储字距调整对。
生成
点击生成按钮(Generate Font Atlas),根据不同的情况生成字体的时间不一样,生成完成之后,保存成对应的字体文件即可。
尾语
建议将官方的例子导入工程中学习学习,里面用法特别多,表现效果也比较好。
如果有写的不好的地方,欢迎各种大佬批评指正。
后续有需要会继续补充。