Skip to content

Label(文字) 组件 ​

如图 ​

Label 组件通常是一个 2D 文字渲染组件,负责在游戏界面中渲染文字信息。组件默认使用系统字体,也支持使用自定义字体,

创建一个文本信息界面 ​

  • 添加 Label:为场景中已添加 Canvas 组件的节点添加一个子节点,并设置它的 Layer 属性为 Layers.Enum.UI_2D, 最后为这个子节点添加一个 Label 组件。

  • 设置 Label 组件的文字信息:将需要显示的文字信息设置到 Label 组件的 string 属性中。如果 string 属性为空,并且 Label 组件的 overflow 属性为 0,那么 Label 节点的宽将一直是 0 。

  • (重点)设置 Label 节点的宽度:设置 Label 组件的 overflow 属性的值为 3 (RESIZE_HEIGHT 模式),并且设置 UITransform 组件的 contentSize 属性的 width 值。

  • 设置 Label 组件的水平对齐方式:设置 Label 组件的 horizontalAlign 属性的值为 0 (左对齐模式)。此模式可以让 Label 的文字水平向左对齐。

  • 设置 Label 组件的文字大小:设置 Label 组件的 fontSize 属性的值。

  • 设置 Label 组件的行高:设置 Label 组件的 lineHeight 属性的值。

  • 设置 Label 组件加粗、倾斜、下划线等样式:需要使用加粗、倾斜、下划线等样式时,分别设置 Label 组件的 isBold、isItalic、isUnderline 属性为 true。

编辑器内手动添加 Label 组件 ​

点击 属性检查器 下面的 添加组件 按钮,然后从 UI 中选择 Label,即可添加 Label 组件到节点上。

Label 属性 ​

属性说明
CustomMaterial自定义材质,使用方法参考 自定义材质
Color文字颜色。
String文本内容字符串。
HorizontalAlign文本的水平对齐方式。可选值有 LEFT、CENTER 和 RIGHT。
VerticalAlign文本的垂直对齐方式。可选值有 TOP、CENTER 和 BOTTOM。
FontSize文本字体大小。
FontFamily文字字体名字。在使用系统字体时生效。
LineHeight文本的行高。
Overflow文本的排版方式,目前支持 CLAMP、SHRINK 和 RESIZE_HEIGHT。详情见下方的 Label 排版 或者 文字排版。
EnableWrapText是否开启文本换行。(在排版方式设为 CLAMP、SHRINK 时生效)
Font指定文本渲染需要的 字体资源。若要使用艺术数字字体,请参考 艺术数字资源 文档进行配置。如果使用系统字体,则此属性可以为空。
UseSystemFont布尔值,是否使用系统字体。
CacheMode文本缓存类型,仅对 系统字体 或 TTF 字体有效,BMFont 字体无需进行这个优化。包括 NONE、BITMAP、CHAR 三种模式。详情见下方的 文本缓存类型。
IsBold文字是否加粗,支持系统字体以及部分 TTF 字体。当 CacheMode 为 CHAR 模式时暂不生效。
IsItalic文字是否倾斜,支持系统字体以及 TTF 字体。当 CacheMode 为 CHAR 模式时暂不生效。
IsUnderline文字是否加下划线,支持系统字以及 TTF 字体。当 CacheMode 为 CHAR 模式时暂不生效。

Label 排版 ​

Label 组件支持三种排版方式,分别是 CLAMP、SHRINK 和 RESIZE_HEIGHT。

  • NONE:默认模式 不会换行.无法修改宽高.自己会按照文字计算宽高

  • CLAMP:文本内容超出 Label 节点宽度时,文本内容会被截断,不会换行。

  • SHRINK:文本内容超出 Label 节点宽度时,文本内容会缩小,直到能够完全显示。

  • (重点)RESIZE_HEIGHT:文本内容超出 Label 节点宽度时,文本内容会换行,并且 Label 节点的高度会自动调整以适应文本内容。

注意

使用 clamp、shrink、resize_height 等文本排版模式时,

Label 节点的 UITransform 组件的 width 属性不会随着 Label 组件 string 属性变化而变化。

文本缓存类型 ​

NONE(用的最多) ​

默认值,Label 中的整段文本将生成一张位图。

BITMAP ​

该模式只能用于文本不常更新的 Label

选择后,Label 中的整段文本仍将生成一张位图,但是会尽量参与 动态合图。只要满足动态合图的要求,就会和动态合图中的其它 Sprite 或者 Label 合并 Draw Call。 由于动态合图会占用更多内存,该模式只能用于文本不常更新的 Label。此模式在节点安排合理的情况下可大幅降低 Draw Call,请酌情选择使用

CHAR ​

  1. 该模式只能用于字体样式和字号(通过记录字体的 fontSize、fontFamily、color、outline 为关键信息,以此进行字符的重复使用,其他有使用特殊自定义文本格式的需要注意)固定,并且不会频繁出现巨量未使用过的字符的 Label。这是为了节约缓存,因为全局共享的位图尺寸为 1024 * 1024,只有场景切换时才会清除,一旦位图被占满后新出现的字符将无法渲染。

  2. Overflow 不支持 SHRINK。

  3. 不能参与动态合图(同样启用 CHAR 模式的多个 Label 在渲染顺序不被打断的情况下仍然能合并 Draw Call)

  4. 目前暂不支持 IsBold、IsItalic 和 IsUnderline 属性。