TextMeshPro使用说明

创建字体

TextMesh Pro无法像UGUI Text那样使用动态字体,因为TextMesh Pro需要对字体进行预处理来计算SDF,这部分计算非常耗时。这对于英文字体来说影响不大,一个字体文件或一张贴图包含的信息都很少,但是对于字符非常多的语言如中文就影响很大。

  • 对于游戏中显示的文字可以使用TextMesh Pro的SDF字体,提高显示效果和特效处理。
  • 对于游戏中的输入框建议使用UGUI自带输入框,使用动态字体。

创建SDF字体文件的过程如下:

  1. 菜单栏打开Window > TextMeshPro > Font Asset Creator
    创建SDF字体

  2. 在Font Source中选择你想要创建的字体

  3. 在Character Set中选择要生成的字符集

  4. 其他选项根据需要进行设置(下面会详细说明每个属性的作用)

  5. 点击下方的Generate Font Atlas按钮生成字体

  6. 生成结束后记得点击Save保存**

Font Creator窗口属性

Font Source 选择要创建SDF字体的源字体

Font Size 创建字体的字号的大小。

  • Auto Sizing 建议使用该选项。根据给定Atlas Resolution(图集分辨率)来计算并使用最大字号
  • Custom 自定义字号

Font Padding 图集中每个字符之间的间隔,以便在渲染时能却分他们的边缘。此外padding也用于文字的特效,所以不宜过小;但是也不宜过大,过大会造成更大的atlas分辨率或者atlas上能承载的字符更少。对于512*512的图集,padding为5通常比较合适。

Packing Method 打包方式

  • Fast 可能计算出不是最大的字号,但是计算速度会快一些
  • Optimum 可以计算出图集上能承载的最大的字号
  • 通常在测试设置时使用Fast,在最终打包时使用Optimum

Atlas Resolution 使用SFD字体时,更高的分辨率会产生更精细的渐变,从而产生更高质量的字体。其中Atlas Resolution很关键,其大小决定了能有支持多少汉字,字体的清晰程度。

Character Set 字体文件中的字符不会自动包含在字体资源中。你必须指定你需要的那些。你可以选择一些预定义的字符集,也可以自己提供字符列表。

  • ASCII 大小写字母+数字+常见符号
  • Extended ASCII 包含所有的ASCII字符
  • ASCII lowercase 小写字母+数字+常见符号
  • ASCII uppercase 大写字母+数字+常见符号
  • Numbers + Symbols 数字+常见符号
  • Custom Range 使用十进制来制定字符的编码范围,可以使用减号和英文逗号来指定范围,如32-126,161-255

Character Set设置

  • Unicode Range(Hex) 使用16进制来制定字符的编码范围,可以使用减号和英文逗号来指定范围,如20-7E,A1-FF
  • Custom Characters 自定义字符,直接输入对应的字符
  • Characters from file 从外部文件中导入字符

注意要包含空格字符,除非确定你不需要它

Font Style 你可以选择几种不同的字体样式。这些设置仅适用于位图字体。
你可以通过shader配置SDF字体的样式,可以选择粗体、斜体、粗体加斜体和描边,也可以控制粗体和轮廓的强度。

Font Render Mode 距离场模式创建SDF纹理需要与SDF shader一起使用。字符是在高分辨率下采样来创建良好的渐变。16x是默认值并且足以用于大多数情况。32x生成较慢但可以让复杂或小字符产生更好的质量。
其他模式直接将字符渲染为位图,以便与位图字体一起使用。Raster模式不使用抗锯齿,Smooth模式使用抗锯齿。两者都有一个Hinted模式,它将字符像素与纹理像素对齐以获得更清晰的结果。

Get Kerning Pairs? 你可以选择从字体中提取字距数据。此数据用于调整特定字符对之间的间距,以产生更好的视觉效果。但是请注意很多字体没有字距数据。

设置全局默认字体

第一种方法

如果生成的字体图集缺少部分字符,每当输入这些字符时,TextMesh Pro会使字符回退到默认字形,你可以在Edit > Project Settings > TextMesh Pro Settings修改该字形。

你也可以设置一个或多个字体资源,当字符无法在主要图集中找到时,TextMesh Pro会将字符回退为这些资源中的字符。出于优化目的,可以使用高分辨率的主要字体图集,而所有回退图集则使用较低分辨率。

第二种方法

找到TextMeshPro的设置文件,默认就在(你的项目)/Assets/TextMesh Pro/Resources中一个叫TMP Settings的文件。修改TMP Settings中的Default Font Asset即可。

第二种方法

精灵字体

你可以使用TextMesh Pro设置来设定字体和材质或图片精灵资源在Resources路径中的位置。

使用富文本时,你可以插入一个精灵,具体根据你在设置中定义的可用主精灵资源。最简单的方法是导入精灵图集,然后在精灵编辑器中进行切分,右键点击该资 源,选择Create > TextMesh Pro > Sprite Asset。

你可以自定义资源的偏移或轴心等设置。相同的,如果在主精灵资源找不到指定精灵,你可以设置一系列回退精灵资源(Fallback Sprite Asset)用于回退。

动态字体扩展

因为SDF AA使字体纹理生成速度超快。在运行时从字体(otf等)中获取字符,并使它们可用于游戏。很有吸引力的是,可以使用具有接近Unity标准动态字体的可用性的字符。

  1. Window >TextMeshPro >FontAssetCreator 创建 FontFontAsset资源
  2. 选择 FontAsset
  3. Generation Settings
  • Source Font File指定字体文件(otf等)
  • Atlas Population Model 设置为 Dynamic
  • Atlas Render Mode 设置为 :SDFAA
  • Sample Point Size是大约72 (取决于字符的分辨率,字体将很快填充, 如果太大,该图集将会很快填满)
  • Atlas Wideth,Atlas Height (取决于可显示的字符)
  1. 按Apply
    动态扩展字体

原理

基于TextMeshPro1.4.1版本,收集当前显示所需的动态文本,利用font.TryAddCharacters接口进行生成字体图集。

使用方法

使用方法

推荐相关组件

  • TextMeshProUGUI_Dynamic
  • TextMeshPro_Dynamic

组件源码地址

GitHub:https://github.com/akof1314/Unity-TextMeshPro-DynamicText

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值