Unity TextMesh Pro标记

本文介绍了如何使用HTML、CSS和JavaScript来实现文本的各种样式,如颜色、字体、下划线、超链接等,并探讨了布局、大小写转换和字符间距等内容。C#示例展示了如何在Unity中处理点击链接事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Color

(1)<color=yellow>Yellow</color>
(2)<#00ff00>Green
Color
(3)透明度:<alpha=#CC> <alpha=#30>

2 Style

2.1 粗体(Blod)

<b>Bold</b>

2.2 斜体(Italics)

<i>Italics</i>
Style

3 Line

3.2 下划线(Underline)

<u>Underline</u>

3.2 删除线(Strikethrough)

<s>Strikethrough</s>
Line

4 Superscript and Subscript

4.1 上标(Sup)

Superscript - X<sup>3</sup>

4.2 下标(Sub)

Subscript - v<sub>x</sub>
Superscript and Subscript

5 标记(Highlighting)

<mark=#00000060>Highlighting</mark>

颜色为8位,支持a通道。
Highlighting

6 大小写

6.1 all caps

<allcaps>all caps</allcaps>

6.2 small caps

The <smallcaps>small caps</smallcaps>

6.3 upper case

<uppercase>upper case</uppercase>

6.4 lower case

<lowercase>LOWER CASE</lowercase>
大小写

7 字间距(Character spacing)

<cspace=0.3em>Character spacing</cspace>
em是一个相对单位
cspace

8 等宽字(Mono spaced)

<mspace=1em>Character spacing</cspace>
mspace

9 行高 line height

<line-height=75>line height<line-height=75>
代码 line height

10 nobr(不换行)

<nobr>No Line-Break</nobr>
代码 在这里插入图片描述

11 Size

<size=20>Size 20</size>
<size=80%>Size 80%</size>
<size=1.2em>Size 1.2em</size>
代码 Size

12 图文混排

<sprite="DropCap Numbers" index=11>

13 缩进、偏移

缩进: <indent=3em>indent</indent>
偏移:<pos=110>

14 布局

居中:<align=center>center</align>
居左:<align=center>left</align>
居右:<align=right>right</align>
两端对齐尾行居左:<align=justified>justified</align>
两端对齐:<align=flush>flush</align>

15 超链接

<link="linkID">link</link>

C#代码:

public class Test : MonoBehaviour, IPointerClickHandler
{
    private TextMeshProUGUI textMeshPro;

    private void Start()
    {
        textMeshPro = GetComponent<TextMeshProUGUI>();
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        Vector3 pos = new Vector3(eventData.position.x, eventData.position.y, 0);
        int linkIndex = TMP_TextUtilities.FindIntersectingLink(textMeshPro, pos, null); //uicamra
        if (linkIndex > -1)
        {
            TMP_LinkInfo linkInfo = textMeshPro.textInfo.linkInfo[linkIndex];
            Debug.Log(linkInfo.GetLinkID());
        }
    }
}
### 使用 UnityTextMesh Pro 实现首行缩进 对于希望在 Unity 的 UI 文本中实现首行缩进的效果,可以利用 `TextMeshPro` 组件及其支持的富文本功能。当使用 `TextMeshPro - Font Asset` 来设置字体时,在 Project 窗口右键点击字体资源并创建 `TextMeshPro -> Font Asset` 并指定中文作为默认字体[^1]。 为了实现首行缩进的具体操作,可以在字符串前加入不可见字符或特定标签来模拟缩进效果。一种常见做法是在要缩进的文字前面加上适当数量的空白符,并将其颜色设为透明以隐藏这些额外的空间: ```xml <color=#FFFFFF00> </color> ``` 上述代码片段中的 `<color>` 标签用于定义一段文字的颜色;此处通过设定 alpha 值 (最后两位) 为零使得该部分完全透明,从而不影响视觉呈现而仅占据空间位置[^2]。 另外需要注意的是,如果未启用 Rich Text 功能,则所有的 HTML 类型标记都将被当作普通文本处理而不生效。因此务必确认已勾选 `Enable Rich Text` 属性以便正确解析和应用此类格式化指令[^3]。 下面是一个完整的 C# 脚本例子展示如何动态调整某个 GameObject 上挂载的 TMP_Text 组件内的文本内容来进行首行缩进: ```csharp using TMPro; using UnityEngine; public class IndentFirstLine : MonoBehaviour { public string originalText = "这是一段测试文本。\n这是第二行。"; void Start() { var textComponent = GetComponent<TMP_Text>(); // 添加四个全角空格并使其透明以形成缩进效果 const int indentSpacesCount = 4; StringBuilder indentedTextBuilder = new StringBuilder(); for(int i=0;i<indentSpacesCount;i++) indentedTextBuilder.Append("<color=#FFFFFF00>\u3000</color>"); indentedTextBuilder.Append(originalText); textComponent.text = indentedTextBuilder.ToString(); } } ``` 此脚本会在对象启动时自动向其关联的 `TMP_Text` 控件内插入一定量经过特殊处理过的前置空白字符,进而达成所需的排版样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值