📜  参考 textmeshpro (1)

📅  最后修改于: 2023-12-03 15:22:51.668000             🧑  作者: Mango

参考 TextMeshPro

简介

TextMeshPro 是一款 Unity Asset Store 上高度可定制的文本渲染引擎插件,为开发者提供了比 Unity 内置文本组件更为广泛和便捷的文本处理能力。它不仅支持富文本样式、文本描边、阴影和发光、字体粗细、流畅的文本动态进度条等更多的文本特效,而且更快速而整洁地在面板上和脚本中设置渲染字符串。

本文将介绍 TextMeshPro 的主要特性和功能,以及如何使用它来改善你的 Unity 游戏开发体验。

安装

你可以在 Unity Asset Store 上访问 TextMeshPro 插件页面,然后选择购买或导入到 Unity 项目中使用。引入完毕,你可以在 “本场景|Hierarchy|右键Create Empty” 创建一个空物体,然后在对应的上下文菜单中选择 “TextMeshPro | TextMeshPro - Text” 来在这个物体中创建新的 TextMeshPro 渲染组件。

特性

以下是一些 TextMeshPro 可带给您的主要特性:

高度可定制

完全自定义文本样式,如字体、大小、颜色、行距、行宽、缩放、字距、行高、缩放和角度偏移等属性,可以很容易地定制化。

丰富的样式

文本之间的语意和格式可以通过不同样式的富文本使您的游戏内容更具可读性,改变这些属性可以大幅改变整个游戏的视觉效果。TextMeshPro 的超强富文本支持还包括所有常见样式,如加粗、斜体、下划线、删除线和链接等。

特殊文本渲染效果

TextMeshPro 支持高分辨率的文本描边、阴影和发光效果。除此之外,还有大量的其他渲染效果可以应用到文本上,例如虚线、弧线和下划线等。

动态文本进度条

追求更多的互动让游戏运行的更流畅,为游戏动态添加一些令人惊艳的视觉表现即可。LabelTextMesh 支持高度定制化的动态文本进度条,它可以控制非常小的细节,并使其更加适合。

运行时功能

在 TextMeshPro 中只需要几行代码即可实现所有的运行时功能,无需添加大量的脚本。同时,也支持在运行时动态修改文本的显示内容。

性能高

相对于使用内置的 TextMesh 组件,TextMeshPro 并不使用特别多的 CPU 和 GPU 不符合,它能够更快、更完美地渲染文本对象。

入门

TextMeshPro 能对文本进行的处理,和内置的 Text 组件相比,有很大不同,让我们来一步步地学习那些重要的部分。

简单的文本渲染

在渲染单行文本时,只需在 TextMeshPro 对象的 TextMeshPro 组件的 “Text” 字段中添加字符串字符串就可以了。

public TextMeshPro textmeshPro;

void Start()
{
    textmeshPro.SetText("Hello World !");
}
富文本样式

对于需要添加样式的文本,可以使用 TextMeshPro 的 Rich Text 标记语法。

public TextMeshPro textmeshPro;

void Start()
{
    textmeshPro.SetText("<b><i><color=red>Hello World !</color></i></b>");
}

在上面的例子中,“” 标记将文本加粗, “” 标记将文本斜体, “” 标记将文本设为红色。在游戏过程中可以根据情况修改样式,非常便捷。

渲染复杂文本

TextMeshPro 还支持跨行以及格式化的渲染,可以在单独的行上定义对应的样式。

public TextMeshPro textmeshPro;

void Start()
{
    textmeshPro.SetText("<size=24>The <#0080FF><b>TextMeshPro</b></color></size>\n<line-height=90%><size=18>Recognized has been provided \nas an alternative to Unity’s Text Mesh.</size>");
}

在上面的例子中,我们使用标记语法渲染一个多行文本带主题的标题,每个行有独特的格式。

文本渲染效果

TextMeshPro 提供了多种文本渲染效果让文本对象在场景中表现更出彩:

public TextMeshPro textmeshPro;

void Start()
{
    textmeshPro.SetText("<u></u><b><i><mark=#FFFF00FF><size=36>Hello World !</size></mark></i></b><u></u>");
}

在上面的例子中,使用了 “” 标记在文本下方添加下划线、使用了 “” 标记以黄色突出显示文本、并使用了 “” 标记来控制文本大小。

文本渲染效果

TextMeshPro 还支持一种有用的渲染空间,称之为 TextMeshProUGUI,这种渲染空间非常适合用于在屏幕中渲染GUI对象和元素:

public TextMeshProUGUI textmeshPro;

void Start()
{
    textmeshPro.SetText("<b><size=36><color=#0080FFFF>Hello World !</color></size></b>");
}

在上面的例子中,使用了 TextMeshProUGUI 组件、使用了 “” 标记来改变文本颜色。它更适用于在 UI 元素中渲染富文本样式。

字体和样式

使用 TextMeshPro 可以很容易地跨平台使用字体,可以从多种文本渲染属性中选择一个,或更改字体的大小、颜色、spacing 、坐标变换等方面的属性。

public TextMeshProUGUI textmeshPro;

void Start()
{
    textmeshPro.fontStyle = FontStyles.Italic | FontStyles.Bold;
    textmeshPro.fontSize = 24f;
    textmeshPro.lineSpacing = 0.6f;
    textmeshPro.color = Color.green;
}

在上面的例子中,我们更改了 TextMeshProUGUI 组件的字体样式、字体大小、行距、文本颜色。

动态修改文本内容

在 TextMeshPro 中,可以通过脚本轻松更新文本内容,使其随游戏过程变更而变更,轻松实现高效互动:

public TextMeshProUGUI textmeshPro;
string myString = "Welcome to Unity World";

void Start()
{
    textmeshPro.SetText(myString);
}

void Update()
{
    myString = "Time: " + Time.time.ToString("F2") + " sec.";
    textmeshPro.SetText(myString);
}

在上面的例子中,我们在 Start() 方法中初始化了 TextMeshProUGUI 组件的文本内容,然后在 Update() 方法中更新该组件文本对象的内容。

总结

上述内容涵盖了许多 TextMeshPro 的特性和用法,其余功能详情可见于 TextMeshPro 开发者文档,使用 TextMeshPro 可在游戏设计中极大提高文本绘制效率和效果,如果您有游戏开发经验或原本使用的 Unity 内置 Text 组件效果不理想,可以尝试使用 TextMeshPro 作为您的文本渲染引擎。