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
该模式只能用于字体样式和字号(通过记录字体的 fontSize、fontFamily、color、outline 为关键信息,以此进行字符的重复使用,其他有使用特殊自定义文本格式的需要注意)固定,并且不会频繁出现巨量未使用过的字符的 Label。这是为了节约缓存,因为全局共享的位图尺寸为 1024 * 1024,只有场景切换时才会清除,一旦位图被占满后新出现的字符将无法渲染。
Overflow 不支持 SHRINK。
不能参与动态合图(同样启用 CHAR 模式的多个 Label 在渲染顺序不被打断的情况下仍然能合并 Draw Call)
目前暂不支持 IsBold、IsItalic 和 IsUnderline 属性。