【Unity】TMP动/静态字体---使用手册
有机紫菜
编辑于 2025年05月25日 00:28

简单讲,TMP有2种模式---动态添加和静态字体.

1.动态模式(Dynamic),根据游戏用到的字符(利用字体文件TTF或者OTF),生成对应的字符集贴图,并随时更新此贴图.

2.静态模式(Static),根据一个字体表,或者字符集合.提前生成差不多的中文字符或者DPS数字字符等.

  • 一般静态模式处理西文或数字与常用符号,直接输入字符串就行

  • 如果静态模式使用中文字符,则推荐使用"3500常用汉字.txt"文件或"7000常用字符"等等

什么时候使用静态什么时候用动态的?

项目中如果文字数量固定,可以预先做文字图片(静态字体),但大量文字做图片慢且占内存。不确定的文字,如用户输入,要用动态生成文字(动态字体),但动态字体耗性能,建议大型项目两者结合用。

  • DPS数字,或西文适合做好静态字体.因为基本不会变

  • 中文等字符多的语言,则建议两者结合用

我想做DPS数字显示.应该用哪种生成形式合适.

像简单的数字,和西文都可以直接使用静态字体模式.

使用静态字体.

至于.字体Asset,可以右键字体文件,选择Create->TextMeshPro->FontAsset.

创建的默认就是静态,如果是Dynamic可以改回到静态.

点击Unity菜单Window->TextMesh Pro->Font Asset Creator,打开字体制作窗口,

字符集如果选自定义的注意字符的编码,是ASCⅡ,还是Unicode字符.

似乎直接中文输入法输入的字符,有时候会识别不了?---可能选错了,Custom Characters而非.Custom Range,range似乎是填写范围用的.

用静态的合适,直接输入对应的常用字符.即可.0123456789

自选一个字符集,数字和符号的.或者手动输入字符.

 字符编码选择

  • ASCII:仅支持基础英文字符(0-127),无法处理中文或其他多字节字符。如果仅处理英文文本,可以使用 ASCII。

  • Unicode:支持全球所有字符,包括中文、日文、特殊符号等。建议在处理中文时使用 Unicode 编码。

Unicode 的具体使用

  • Unicode 范围设置:

  • 常用中文字符范围:4E00-9FA5

  • 基础英文和符号:0020-007F

  • 其他符号(如全角标点):FF00-FFEF

  • 在 TextMeshPro 的 Font Asset Creator 中,可以通过 Unicode Range 设置字符集范围。将这些范围输入到 Unicode Range 字段中,确保字体资产包含所有需要的字符。

静态字体的.补充字体Fallback部分怎么设置?

当然静态和动态两者可以混用.也就是静态中带一个Fallback后备动态字体.

有时候,可以把动态字体设置到静态字体Asset的fallback里面.作为补充字符使用。

先创建一个动态字体,然后拖拽到静态字体设置的fallback字体中.

动态生成的怎样设置?

和上面操作一样的,只不过.字体Asset中的设置确保为Dynamic.