1️⃣ 前提条件
-
确认使用 TextMeshPro / TextMeshProUGUI 组件(Unity自带 Text 不支持 TMP 字体资产)
-
确认下载的 字体文件支持中文(例如
Source Han Sans SC) -
TMP 版本建议 ≥ 3.0,Unity 版本建议 2020+
2️⃣ Font Asset Creator 设置步骤
-
Source Font File → 选择支持中文的字体(.ttf / .otf)
-
Sampling Point Size → 90~120(中文字符多,建议 120 更清晰)
-
Padding → 2~5
-
Atlas Resolution → 4096 × 4096(中文 Glyph 多,否则生成失败)踩坑点
-
Character Set → Unicode Range
-
输入中文 Unicode 范围(16 进制 Hex):
4E00-9FFF -
注意:TMP 只认 Hex,不要用十进制 19968-40959
-
-
Render Mode → SDFAA(清晰、抗锯齿好)
-
Auto Sizing → 关闭
-
Get Kerning Pairs → 勾选(可选,提高字距精度)
-
点击 Generate Font Atlas → 等生成完成
3️⃣ Font Asset 使用步骤
-
在 Inspector 中确认 Character Table / Glyph Table
-
应该能看到大量中文字符
-
-
绑定 TMP 文本组件:
-
Font Asset → 拖入刚生成的 Font Asset
-
Fallback Font Assets → 可以先清空,保证测试只用你生成的中文字体
-
-
文本组件里输入中文 → 应该直接显示
4️⃣ 动态模式备用方案
如果生成 Glyph 太多或 Atlas 太大,可使用 动态模式,TMP 会在运行时生成中文字符:
-
Font Asset Inspector → Atlas Population Mode → Dynamic
-
绑定到 TMP 文本组件
-
运行游戏,TMP 会动态生成中文
-
优点:不用手动指定 Unicode 范围
-
缺点:首次渲染中文时稍慢
5️⃣ 常见踩坑总结
| 坑 | 原因 | 解决方法 |
|---|---|---|
| 中文不显示 | Font Asset 没生成中文 Glyph(Character Set 错或 Atlas 太小) | Unicode Range → 4E00-9FFF Hex,Atlas 4096,Sampling 90~120 |
| 下划线 / 删除线不显示 | Font Asset 没包含 TMP 特殊字符 | 生成 Font Asset 时勾选 Special Characters 或改 Dynamic 模式 |
| 生成十进制 Unicode | TMP 只认 Hex | 记得转换 16 进制(4E00-9FFF) |
| Atlas 太小 / Sampling 太低 | 中文 Glyph 多,生成失败 | Atlas 4096×4096,Sampling ≥90 |
| TMP 文本组件没绑定 Font Asset | 即使生成了中文,也不显示 | 确认 TMP 组件 Font Asset 已替换为生成的中文 Font Asset |
| Fallback Font 导致显示错 | TMP 会尝试回退到 fallback | 测试阶段先清空 Fallback Font Assets |
| 英文显示中文不显示 | Character Set 只生成 ASCII | 必须选择 Unicode / Custom Characters |
6️⃣ 建议
-
开发阶段:用 Dynamic 模式最稳妥,不用担心 Atlas 大小
-
正式发布:如果要优化性能,可以生成 Static Font Asset,但要确保 Atlas 足够大(中文全部覆盖)
-
输入特殊字符:下划线 / 删除线 / emoji 也需要加入 Font Asset 或 Dynamic 模式生成
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/m0_63018246/article/details/157252527



