Unity TMP 中文字体生成

1️⃣ 前提条件

  • 确认使用 TextMeshPro / TextMeshProUGUI 组件(Unity自带 Text 不支持 TMP 字体资产)

  • 确认下载的 字体文件支持中文 (例如 Source Han Sans SC)

  • TMP 版本建议 ≥ 3.0 ,Unity 版本建议 2020+

2️⃣ Font Asset Creator 设置步骤

  1. Source Font File → 选择支持中文的字体(.ttf / .otf)

  2. Sampling Point Size → 90~120(中文字符多,建议 120 更清晰)

  3. Padding → 2~5

  4. Atlas Resolution → 4096 × 4096 (中文 Glyph 多,否则生成失败)踩坑点

  5. Character Set → Unicode Range

    • 输入中文 Unicode 范围(16 进制 Hex):

      4E00-9FFF

    • 注意:TMP 只认 Hex,不要用十进制 19968-40959

  6. Render Mode → SDFAA(清晰、抗锯齿好)

  7. Auto Sizing → 关闭

  8. Get Kerning Pairs → 勾选(可选,提高字距精度)

  9. 点击 Generate Font Atlas → 等生成完成

3️⃣ Font Asset 使用步骤

  1. 在 Inspector 中确认 Character Table / Glyph Table

    • 应该能看到大量中文字符
  2. 绑定 TMP 文本组件:

    • Font Asset → 拖入刚生成的 Font Asset

    • Fallback Font Assets → 可以先清空,保证测试只用你生成的中文字体

  3. 文本组件里输入中文 → 应该直接显示


4️⃣ 动态模式备用方案

如果生成 Glyph 太多或 Atlas 太大,可使用 动态模式,TMP 会在运行时生成中文字符:

  1. Font Asset Inspector → Atlas Population Mode → Dynamic

  2. 绑定到 TMP 文本组件

  3. 运行游戏,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 模式生成

相关推荐
辻弋2013 天前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
Martina_03213 天前
AI生成3D场景导入 Unity/Unreal 后,NPC 总串层?用6步检查导航高度与跨层连接
人工智能·游戏·数学建模·3d·unity·自然语言处理·aigc
小贺儿开发3 天前
Unity 局域网遥控幻灯片展示工具 3.0
科技·http·unity·工具·ppt·通信·网页
WarPigs5 天前
Unity对象不应该使用null传播的问题
unity
每日出拳老爷子6 天前
【VR】【Unity】抓走转放系列21|一天搭完门和抽屉工具槽:小场景按这个次序拼装
unity·vr·驱动·排错·snap zone
淡海水7 天前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc
小贺儿开发7 天前
Unity 文物新生 会讲故事的文物展墙
人工智能·科技·unity·ai·视频·互动·演示
淡海水7 天前
02-03-原理篇-大对象堆
unity·c#·游戏引擎·.net·gc
WarPigs8 天前
Unity在Create菜单添加创建自定义脚本模板选项
unity
郝学胜-神的一滴8 天前
C++ Templates 01:拨开迷雾,读懂C++模板经典著作
开发语言·c++·程序人生·游戏·游戏引擎·软件构建