Label 组件用来显示一段文字,文字可以是系统字体、TrueType? 字体、BMFont 字体或艺术数字。另外,Label 还具有排版功能。
Label 属性
属性 | 功能说明 |
---|---|
String | 文本内容字符串。 |
Horizontal Align | 文本的水平对齐方式。可选值有 LEFT,CENTER 和 RIGHT。 |
Vertical Align | 文本的垂直对齐方式。可选值有 TOP,CENTER 和 BOTTOM。 |
Font Size | 文本字体大小。 |
Line Height | 文本的行高。 |
SpacingX | 文本字符之间的间距。(使用 BMFont 位图字体时生效) |
Overflow | 文本的排版方式,目前支持 CLAMP,SHRINK 和 RESIZE_HEIGHT。详情见下方的 Label 排版。 |
Enable Wrap Text | 是否开启文本换行。(在排版方式设为 CLAMP、SHRINK 时生效) |
Font | 指定文本渲染需要的字体文件,如果使用系统字体,则此属性可以为空。 |
Font Family | 文字字体名字。(使用系统字体时生效) |
Enable Bold | 是否启用黑体。(使用系统字体或 TTF 字体时生效) |
Enable Italic | 是否启用斜体。(使用系统字体或 TTF 字体时生效) |
Enable Underline | 是否启用下划线。(使用系统字体或 TTF 字体时生效) |
Underline Height | 下划线的高度。 |
Cache Mode | 文本缓存类型包括 NONE 、BITMAP 、CHAR 三种。仅对系统字体或 TTF 字体有效,BMFont 字体无需进行这个优化。详情见下方的 文本缓存类型。 |
Use System Font | 是否使用系统字体。 |
Src Blend Factor | 混合文本图片时,源图片的取值模式。可参考 BlendFactor API,具体说明可参考下文 系统文本的混合模式说明 部分的内容。 |
Dst Blend Factor | 混合显示两张图片时,目标图片的取值模式。可参考 BlendFactor API,具体说明可参考下文 系统文本的混合模式说明 部分的内容。 |
Materials | 材质资源,详情请参考文档 Material。 |
Label 排版
属性 | 功能说明 |
---|---|
CLAMP | 文字尺寸不会根据 Bounding Box 的大小进行缩放,Wrap Text 关闭的情况下,按照正常文字排列,超出 Bounding Box 的部分将不会显示。Wrap Text 开启的情况下,会试图将本行超出范围的文字换行到下一行。如果纵向空间也不够时,也会隐藏无法完整显示的文字。 |
SHRINK | 文字尺寸会根据 Bounding Box 大小进行自动缩放(不会自动放大,最大显示 Font Size 规定的尺寸)。 Wrap Text 开启时,当宽度不足时会优先将文字换到下一行,如果换行后还无法完整显示,则会将文字进行自动适配 Bounding Box 的大小。 Wrap Text 关闭时,则直接按照当前文字进行排版,如果超出边界则会进行自动缩放。 注意:这个模式在文本刷新的时候可能会占用较多 CPU 资源。 |
RESIZE_HEIGHT | 文本的 Bounding Box 会根据文字排版进行适配,这个状态下用户无法手动修改文本的高度,文本的高度由内部算法自动计算出来。 |
文本缓存类型(Cache Mode)
属性 | 功能说明 |
---|---|
NONE | 默认值,Label 中的整段文本将生成一张位图。 |
BITMAP | 选择后,Label 中的整段文本仍将生成一张位图,但是会尽量参与 动态合图。只要满足动态合图的要求,就会和动态合图中的其它 Sprite 或者 Label 合并 Draw Call。由于动态合图会占用更多内存,该模式只能用于文本不常更新的 Label 。 补充:和 NONE 模式一样,BITMAP 模式会强制给每个 Label 组件生成一张位图,不论文本内容是否等同。如果场景中有大量相同文本的 Label,建议使用 CHAR 模式以复用内存空间。 |
CHAR | 原理类似 BMFont,Label 将以"字"为单位将文本缓存到全局共享的位图中,相同字体样式和字号的每个字符将在全局共享一份缓存。能支持文本的频繁修改,对性能和内存最友好。不过目前该模式还存在如下限制,我们将在后续的版本中进行优化: 1、该模式只能用于字体样式和字号固定(通过记录字体的 fontSize、fontFamily、color、outline 为关键信息,以此进行字符的重复使用,其他有使用特殊自定义文本格式的需要注意),并且不会频繁出现巨量未使用过的字符的 Label 。这是为了节约缓存,因为全局共享的位图尺寸为 2048 * 2048 ,只有场景切换时才会清除,一旦位图被占满后新出现的字符将无法渲染。 2、不能参与动态合图(同样启用 CHAR 模式的多个 Label 在渲染顺序不被打断的情况下仍然能合并 Draw Call) 3. 该模式在 原生平台 上使用 FreeType 渲染。 |