unity RichText
在学习 Unity 时,我们会遇到 RichText,即富文本。本文旨在帮助大家更好地了解 Unity RichText,以便在后续使用中更加得心应手。
富文本的用途
这种富文本主要用于 GUI 元素和文本网格,能够结合多种字体类型和大小。GUIStyle、GUIText 和 TextMesh 类都具备富文本设置功能,可指示 Unity 识别文本中含有的标记标签。此外,Debug.Log 也能利用这些标记标签增强代码报告错误的能力。需要注意的是,这些标签本身不会显示,而是会将对应的风格变化应用到文本上。
标记格式
该标记系统的灵感源自 HTML,但并不严格遵循标准 HTML 规范。其基本原理是,一对匹配的标签可包含一部分文字。
示例中,标签由“尖括号”< 和 > 以及文本组成。标签内的文本代表标签名称(如示例中的 b)。结尾标签与开头标签名称相同,但需添加 / 符号。这些标签不会直接显示给用户,而是用于定义其所括起来文字的风格。例如,使用 <b> 标签将 “not” 括起来,就会对该单词应用粗体样式,文本将呈现为:
已标记的文本块(包括被标签括入的部分)被视为一个元素,如 <b>not</b>。
嵌套元素
可以通过将一个元素嵌套到另一个元素中,为一个文本块应用多种样式。
i 标签用于应用斜体风格,在屏幕上的显示效果如下:
需要注意结束标签的顺序,它与起始标签的顺序相反。这样做的目的是让你更清晰地处理内部标签,确保其不会跨越整个文本的最外层元素。(标签不能交叉包含,只能是一对标签包含另一对标签,而不能只包含另一对标签的一部分。)
显示效果为:
标签参数
某些标签具有简单的效果,开始标签可以携带一些参数。例如,color 标记需要指定要应用的颜色。在开始标签中应用参数的示例如下:
注意,结尾标签不包含参数值。参数值可以用双引号括起来,但这并非必需。
支持的标签
以下列表详细描述了 Unity 支持的所有标签样式:
<b>
用于呈现粗体文本。
<i>
用于呈现斜体文本。
<size>
根据给定的参数值,以像素为单位设定文字大小。虽然在 Debug.Log 中可以看到该标签的效果,但如果设置的文字大小过大,你会发现窗口栏和控制台的显示效果会变得奇怪。
<color>
根据参数值设置文本颜色,颜色值可以采用传统的 HTML 格式指定。字母对应十六进制数字,分别表示红色、绿色、蓝色和 alpha(透明度)值。例如,青色完全不透明的表示为:
另一种方式是使用颜色名称,这种方式更易于理解且自然,但颜色范围有限,并且总是假定为完全不透明。
可用的颜色名称如下表所示:
<material>
仅用于文本网格,用于渲染具有材料参数所指定的一段文字。该值是文本网格在检视面板材质数组的索引。
<quad>
仅用于文本网格,用于在文本中内嵌图像。它的参数 material 用于指定图片,图片的高度以像素为单位,另外四个参数表示一个用于显示图像的矩形区域。与其他标签不同,quad 标签无需环绕文字,因此没有结束标签,斜杠符号放置在开始标签的结尾表示结束。
该行代码的含义是,材质的位置在渲染器的材质数组中,同时将图像高度设置为 20 像素。用于显示图像的矩形区域的初始位置由 X、Y、width 和 height 的值确定,这些参数非常适合处理宽高不成比例的图片。