TextMeshPro(简称TMP)的富文本标签(Rich Text Tags)是一套类HTML的标记语法,直接写在文本字符串中,可实现颜色、大小、粗细、斜体、下划线、删除线、上标/下标、对齐、边距、缩进、图文混排、超链接、自定义样式、垂直偏移、透明度、背景高亮、换行等效果,且支持嵌套与动态拼接。

下面按功能分类,给出完整标签说明+可直接复制的示例+效果说明


一、基础文本样式(最常用)

1. <b> 粗体(Bold)

  • 说明:文本加粗,需闭合标签
  • 示例:正常文本 <b>粗体文本</b> 正常文本
  • 效果:正常文本 粗体文本 正常文本

2. <i> 斜体(Italic)

  • 说明:文本倾斜,需闭合标签
  • 示例:正常文本 <i>斜体文本</i> 正常文本
  • 效果:正常文本 斜体文本 正常文本

3. <u> 下划线(Underline)

  • 说明:文本下方加线,需闭合标签
  • 示例:正常文本 <u>下划线文本</u> 正常文本
  • 效果:正常文本 下划线文本 正常文本

4. <s> 删除线(Strikethrough)

  • 说明:文本中间加线,需闭合标签
  • 示例:原价 <s>100元</s> 现价60元
  • 效果:原价 100元 现价60元

5. <allcaps> 全大写(All Caps)

  • 说明:文本强制转为大写,需闭合标签
  • 示例:小写转大写:<allcaps>hello world</allcaps>
  • 效果:小写转大写:HELLO WORLD

6. <smallcaps> 小型大写(Small Caps)

  • 说明:小写字母转为小型大写,需闭合标签
  • 示例:普通文本 <smallcaps>small caps</smallcaps> 普通文本
  • 效果:普通文本 SMALL CAPS 普通文本

二、颜色与透明度

7. <color> 文本颜色(Color)

  • 说明:支持颜色名、十六进制(#RGB/#RRGGBB/#RRGGBBAA)、RGBA值,需闭合标签
  • 示例1(颜色名):<color=red>红色文本</color> <color=blue>蓝色文本</color>
  • 示例2(十六进制):<color=#FF6B6B>浅红</color> <color=#00FF0080>半透绿</color>
  • 效果:红色文本、蓝色文本、浅红、半透绿

8. <alpha> 透明度(Alpha)

  • 说明:仅控制透明度(00=全透明,FF=不透明),自闭合或作用到末尾
  • 示例:不透明文本 <alpha=#80>半透明文本 <alpha=#30>更透明文本
  • 效果:不透明文本 → 半透明 → 更透明

9. <mark> 背景高亮(Mark/Highlight)

  • 说明:给文本加背景色,需闭合标签
  • 示例:普通文本 <mark=#FFFF00>黄色高亮</mark> 普通文本
  • 效果:普通文本 黄色高亮 普通文本

三、字体大小与缩放

10. <size> 字体大小(Size)

  • 说明:支持像素(px)、字体单位(em)、百分比(%),需闭合标签
  • 示例1(像素):正常大小 <size=30>30像素</size> 正常大小
  • 示例2(em):正常 <size=2em>2倍大小</size> 正常
  • 示例3(百分比):正常 <size=150%>1.5倍</size> 正常
  • 效果:按数值放大/缩小文本

四、上标与下标(科学/化学式常用)

11. <sup> 上标(Superscript)

  • 说明:文本上移、缩小,需闭合标签
  • 示例:平方:X<sup>2</sup> 立方:Y<sup>3</sup>
  • 效果:平方:X² 立方:Y³

12. <sub> 下标(Subscript)

  • 说明:文本下移、缩小,需闭合标签
  • 示例:水:H<sub>2</sub>O 二氧化碳:CO<sub>2</sub>
  • 效果:水:H₂O 二氧化碳:CO₂

五、布局与对齐

13. <align> 文本对齐(Align)

  • 说明:作用于后续整段文本,支持left/center/right/justify/flush,自闭合
  • 示例:
<align=left>左对齐文本
<align=center>居中对齐文本
<align=right>右对齐文本
<align=justify>两端对齐文本(自动拉伸间距填满行)
  • 效果:分别左/中/右/两端对齐

14. <indent> 首行缩进(Indent)

  • 说明:首行缩进,支持px/em/%,作用于后续所有行
  • 示例:<indent=2em>首行缩进2字符,后续行也缩进
  • 效果:首行及后续行均缩进2em

15. <margin> 左右边距(Margin)

  • 说明:文本左右留空,支持px/em/%;可单独用margin-left/margin-right
  • 示例:普通文本 <margin=10%>左右留10%边距</margin> 普通文本
  • 效果:指定文本左右留白

16. <voffset> 垂直偏移(Vertical Offset)

  • 说明:文本基线上下偏移,支持px/em;正值上移,负值下移
  • 示例:基线文本 <voffset=10>上移10px</voffset> <voffset=-10>下移10px</voffset>
  • 效果:基线文本 → 上移 → 下移

17. <br> 换行(Line Break)

  • 说明:强制换行,自闭合
  • 示例:第一行文本<br>第二行文本
  • 效果:
    第一行文本
    第二行文本

六、图文混排(Sprite)

18. <sprite> 插入精灵图片(Sprite)

  • 说明:需提前创建TMP Sprite Asset并放入Resources/Sprites;支持index(索引)/name(名称)/scale(缩放)/color(着色)/rotation(旋转),自闭合
  • 前提:创建Sprite Asset→拖入图集→设置为TMP默认Sprite Asset
  • 示例1(索引):点赞 <sprite index=0 scale=0.8> 收藏 <sprite index=1>
  • 示例2(名称+颜色):红心 <sprite name=heart color=#FF0000 scale=1.2>
  • 效果:文本中插入自定义图标,支持缩放/着色/旋转

七、超链接(可交互)

  • 说明:给文本添加唯一ID热区,需闭合标签;配合脚本监听点击事件
  • 示例:点击 <color=blue><link="btn_confirm">确认</link></color> 继续
  • 脚本监听(C#):
// 注册监听
TMPro_EventManager.OnLinkClick += OnLinkClicked;
// 取消监听
void OnDisable() => TMPro_EventManager.OnLinkClick -= OnLinkClicked;
// 回调
void OnLinkClicked(object sender, LinkClickArgs e) {
    if (e.linkID == "btn_confirm") Debug.Log("确认链接被点击");
}
  • 效果:“确认”文本变为可点击热区,点击触发回调

八、自定义样式(Style)

20. <style> 自定义样式(Style)

  • 说明:提前在TMP Style Sheet中定义样式(如标题、警告),通过名称引用,需闭合标签
  • 前提:创建Style Sheet→添加样式(设置颜色、大小、粗体等)→TMP组件指定Style Sheet
  • 示例:<style="Title">这是标题样式</style> 普通文本
  • 效果:应用预设的自定义样式(如大号、粗体、蓝色)

九、高级:字体与材质

21. <font> 指定字体/材质(Font)

  • 说明:切换字体或材质,需闭合标签;需提前导入字体到项目
  • 示例:默认字体 <font="Arial">Arial字体</font> 默认字体
  • 效果:指定文本使用自定义字体

十、通用规则(必看)

  1. 语法:标签用<>包裹,闭合标签加/;属性值可加引号(="red")或不加(=red),等号两侧不能有空格
  2. 嵌套:支持嵌套(如<b><color=red>粗红</color></b>),但需正确闭合
  3. 优先级:同类型标签后生效覆盖前(如<color=red>红<color=blue>蓝</color>)。
  4. 自闭合:无内容标签(<br>/<sprite>/<align>)无需闭合。
  5. 启用Rich Text:TMP组件勾选Rich Text选项,否则标签不生效。

常用组合示例(直接复制可用)

// 1. 彩色粗体+删除线
tmpText.text = "<b><color=#FF0000><s>原价:99元</s></color></b> <color=#00FF00>现价:59元</color>";

// 2. 图文混排+上标
tmpText.text = "能量 <sprite name=energy scale=0.9> 100<sup>+</sup>";

// 3. 超链接+高亮
tmpText.text = "请阅读 <mark=#FFFF00><link="link_terms">用户协议</link></mark>";