Appearance
TextMeshPro - Text (UI)


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 没有包含中文字形。
解决方法:
- 准备支持中文的字体文件。
- 右键字体文件。
- 选择
Create > TextMeshPro > Font Asset。 - 将生成的 TMP Font Asset 拖入
Font Asset。 - 必要时设置 Dynamic,或配置 Fallback Font Asset。
可以参考 TMP_FontAsset 官方 API。
4. Material Preset
Material Preset 控制文字的渲染效果,例如:
- 文字颜色
- 描边
- 阴影
- 外发光
- 内发光
- 透明度
- 软裁剪效果
截图底部显示:
Shader: TextMeshPro/Mobile/Distance FieldTextMeshPro 使用 SDF,也就是有向距离场技术。它可以让文字在放大、缩小时仍然保持相对清晰。
如果只想修改某一个文字对象的描边或阴影,建议创建新的 Material Preset,避免影响其他共用同一材质的文字。
5. Font Style
截图中的按钮含义如下:
B:粗体I:斜体U:下划线S:删除线ab:小写AB:大写SC:小型大写
这些设置只影响当前文字对象。
6. Font Size 与 Auto Size
Font Size 是字号,截图中为:
36Auto 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 或 Masking12. Horizontal Mapping 与 Vertical Mapping
这两个选项主要影响文字材质的纹理坐标,例如:
- 渐变
- 描边
- 发光
- 材质纹理
- 特殊 Shader 效果
常见映射方式包括:
CharacterLineParagraphMatch 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。