Skip to content

TextMeshPro - Text (UI)

image-20260710192849814image-20260710192959137Unity_TextMeshPro_UI_Inspector_Expanded_Guide

1. Text Input

Text Input 是文字内容输入框。

截图中的内容是:

New Text

可以输入单行或多行文字,也可以在脚本中修改:

using TMPro;
using UnityEngine;

public class TextDemo : MonoBehaviour
{
    [SerializeField] private TMP_Text label;

    private void Start()
    {
        label.text = "欢迎来到 Unity";
    }
}

Enable RTL Editor 用于从右到左书写的语言,例如阿拉伯语、希伯来语。中文和英文通常关闭。

2. Text Style

截图中的 Normal 表示当前使用普通文字样式。

它与下面的 Font Style 不完全相同:

  • Text Style:从样式表中选择预设样式。
  • Font Style:直接对当前文字设置粗体、斜体等效果。

3. Font Asset

截图中使用的是:

LiberationSans SDF (TMP_Font Asset)

TMP_Font Asset 不是普通字体文件,而是 TextMeshPro 生成的字体资源,里面包含:

  • 字符表
  • 字形信息
  • 字体图集
  • 字符间距和排版数据
  • SDF 距离场信息

如果中文显示成方框、问号或缺字,通常是因为当前 Font Asset 没有包含中文字形。

解决方法:

  1. 准备支持中文的字体文件。
  2. 右键字体文件。
  3. 选择 Create > TextMeshPro > Font Asset
  4. 将生成的 TMP Font Asset 拖入 Font Asset
  5. 必要时设置 Dynamic,或配置 Fallback Font Asset。

可以参考 TMP_FontAsset 官方 API

4. Material Preset

Material Preset 控制文字的渲染效果,例如:

  • 文字颜色
  • 描边
  • 阴影
  • 外发光
  • 内发光
  • 透明度
  • 软裁剪效果

截图底部显示:

Shader: TextMeshPro/Mobile/Distance Field

TextMeshPro 使用 SDF,也就是有向距离场技术。它可以让文字在放大、缩小时仍然保持相对清晰。

如果只想修改某一个文字对象的描边或阴影,建议创建新的 Material Preset,避免影响其他共用同一材质的文字。

5. Font Style

截图中的按钮含义如下:

  • B:粗体
  • I:斜体
  • U:下划线
  • S:删除线
  • ab:小写
  • AB:大写
  • SC:小型大写

这些设置只影响当前文字对象。

6. Font Size 与 Auto Size

Font Size 是字号,截图中为:

36

Auto Size 开启后,TextMeshPro 会在设定的最小字号和最大字号范围内自动调整文字大小,使内容尽量放入 RectTransform。

适合:

  • 动态标题
  • 玩家昵称
  • 分数
  • 不同长度的本地化文字

但 Auto Size 也可能导致文字过小,因此需要设置合理的最小字号。

7. Vertex Color、Color Gradient、Override Tags

Vertex Color 是文字的顶点颜色。

  • 白色:保持材质原色。
  • 黑色:文字变暗。
  • Alpha 为 0:文字完全透明。

Color Gradient 开启后,可以设置:

  • 上下渐变
  • 左右渐变
  • 四角渐变
  • 每个顶点不同的颜色

Override Tags 用于控制 Inspector 中的设置是否覆盖文字内容里的部分富文本标签,例如:

<color=red>重要内容</color>

8. Spacing Options

截图中显示了四种间距:

  • Character:字符间距
  • Word:单词间距
  • Line:行间距
  • Paragraph:段落间距

例如:

Character = 2

会让每个字符之间略微拉开。

常见用途:

  • 标题增加字距
  • 制作英文标题
  • 调整对话框行距
  • 区分段落内容

9. Alignment

Alignment 按钮控制文字的位置。

水平对齐一般包括:

  • 左对齐
  • 居中
  • 右对齐
  • 两端对齐
  • 强制对齐

垂直对齐一般包括:

  • 顶部
  • 垂直居中
  • 底部
  • 基线对齐

标题通常使用水平居中和垂直居中;正文通常使用左对齐和顶部对齐。

10. Text Wrapping Mode

Text Wrapping Mode 控制文字是否自动换行。

常见模式:

  • Standard:标准自动换行。
  • No Wrap:不换行,适合单行标题或跑马灯。
  • 字符级换行:长数字、连续英文或中文内容放不下时,按字符断行。

中文没有空格,所以要特别测试标点和字符换行效果。

11. Overflow

截图中的 Overflow 表示文字超出 RectTransform 后仍然继续显示,因此可能出现“文字跑出方框”。

常见选项:

  • Overflow:允许超出文本框。
  • Ellipsis:超出部分显示省略号。
  • Truncate:直接截断超出内容。
  • Masking:裁掉文本框外的部分。
  • Page:按页显示文字。
  • Linked:将溢出内容交给另一个 TMP Text。

如果不希望文字跑出方框,通常使用:

Text Wrapping Mode = Standard
Overflow Mode = Ellipsis 或 Masking

12. Horizontal Mapping 与 Vertical Mapping

这两个选项主要影响文字材质的纹理坐标,例如:

  • 渐变
  • 描边
  • 发光
  • 材质纹理
  • 特殊 Shader 效果

常见映射方式包括:

  • Character
  • Line
  • Paragraph
  • Match Aspect

它们主要改变材质效果的坐标方式,不是用来控制普通换行的。

13. Extra Settings

展开 Extra Settings 后,通常可以看到以下选项:

  • Margins:文字容器内部边距。
  • Geometry Sorting:文字几何顶点排序,通常保持默认。
  • Rich Text:是否解析 <b><color><size> 等标签。
  • Parse Escape Characters:是否解析换行、制表等转义字符。
  • Sprite Asset:允许通过 <sprite> 在文字中插入图标。
  • Style Sheet:使用预先定义的文字样式。
  • Extra Padding:增加 SDF 边缘采样空间,减少描边被裁掉。
  • Maskable:是否可以被 UI Mask 或 Rect Mask 2D 裁剪。
  • Raycast Target:是否参与 UI 点击检测。
  • Culling:是否剔除视野外的文字。
  • Orthographic:控制文字在正交或透视环境下的渲染判断。

装饰性文字通常可以关闭 Raycast Target,避免文字挡住后面的按钮。

14. 常见问题

文字越出方框:

c
Text Wrapping Mode = Standard
Overflow Mode = Ellipsis 或 Masking

中文变成方框:

c
Font Asset 缺少中文字形

需要创建中文 TMP Font Asset,或配置 Fallback Font Asset。

文字太小:

  • 检查 Font Size
  • 检查 Auto Size
  • 检查 RectTransform 尺寸
  • 检查 Canvas Scaler

文字描边被截断:

  • 检查 Material Preset
  • 尝试开启 Extra Padding
  • 检查文本容器和 Mask 设置

按钮点击失效:

  • 检查文字的 Raycast Target
  • 检查 Canvas 是否有 Graphic Raycaster
  • 检查场景中是否存在 EventSystem

TextMeshPro 的文字内容、字体、溢出模式等属性可以通过 TMP_Text API 访问,详见 TMP_Text 官方 API

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0