• Label 组件参考
    • Label 属性
    • Label 排版
    • 文本缓存类型(Cache Mode)
    • 详细说明
      • BMFont 与 UI 合图自动批处理

    Label 组件参考

    Label 组件用来显示一段文字,文字可以是系统字体,TrueType 字体或者 BMFont 字体和艺术数字。另外,Label 还具有排版功能。

    label-property

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

    文字的脚本接口请参考 Label API。

    Label 属性

    属性功能说明
    String文本内容字符串。
    Horizontal Align文本的水平对齐方式。可选值有 LEFT,CENTER 和 RIGHT。
    Vertical Align文本的垂直对齐方式。可选值有 TOP,CENTER 和 BOTTOM。
    Font Size文本字体大小。
    Line Height文本的行高。
    Overflow文本的排版方式,目前支持 CLAMP,SHRINK 和 RESIZE_HEIGHT。详情见下方的 Label 排版。
    Enable Wrap Text是否开启文本换行。(在排版方式设为 CLAMP、SHRINK 时生效)
    SpacingX文本字符之间的间距。(使用 BMFont 位图字体时生效)
    Font指定文本渲染需要的字体文件,如果使用系统字体,则此属性可以为空。
    Font Family文字字体名字。在使用系统字体时生效。
    Cache Mode文本缓存类型(v2.0.9 中新增),仅对 系统字体ttf 字体有效,BMFont 字体无需进行这个优化。包括 NONEBITMAPCHAR 三种模式。详情见下方的 文本缓存类型。
    Use System Font布尔值,是否使用系统字体。
    Src Blend Factor当前渲染混合模式
    Dst Blend Factor背景混合模式,和上面的属性共同作用,可以将前景和背景渲染的文本用不同的方式混合,效果预览可以参考 glBlendFunc Tool

    Label 排版

    属性功能说明
    CLAMP文字尺寸不会根据 Bounding Box 的大小进行缩放,Wrap Text 关闭的情况下,按照正常文字排列,超出 Bounding Box 的部分将不会显示。Wrap Text 开启的情况下,会试图将本行超出范围的文字换行到下一行。如果纵向空间也不够时,也会隐藏无法完整显示的文字。
    SHRINK文字尺寸会根据 Bounding Box 大小进行自动缩放(不会自动放大,最大显示 Font Size 规定的尺寸),Wrap Text 开启时,当宽度不足时会优先将文字换到下一行,如果换行后还无法完整显示,则会将文字进行自动适配 Bounding Box 的大小。如果 Wrap Text 关闭时,则直接按照当前文字进行排版,如果超出边界则会进行自动缩放。
    RESIZE_HEIGHT文本的 Bounding Box 会根据文字排版进行适配,这个状态下用户无法手动修改文本的高度,文本的高度由内部算法自动计算出来。

    文本缓存类型(Cache Mode)

    属性功能说明
    NONE默认值,Label 中的整段文本将生成一张位图。
    BITMAP选择后,Label 中的整段文本仍将生成一张位图,但是会尽量参与 动态合图。只要满足动态合图的要求,就会和动态合图中的其它 Sprite 或者 Label 合并 Draw Call。由于动态合图会占用更多内存,该模式只能用于文本不常更新的 Label
    CHAR原理类似 BMFont,Label 将以“字”为单位将文本缓存到全局共享的位图中,相同字体样式和字号的每个字符将在全局共享一份缓存。能支持文本的频繁修改,对性能和内存最友好。不过目前该模式还存在如下限制,我们将在后续的版本中进行优化:1、该模式只能用于字体样式和字号(通过记录字体的 fontSize、fontFamily、color、outline 为关键信息,以此进行字符的重复使用,其他有使用特殊自定义文本格式的需要注意)固定,并且不会频繁出现巨量未使用过的字符的 Label。这是为了节约缓存,因为全局共享的位图尺寸为 2048*2048,只有场景切换时才会清除,一旦位图被占满后新出现的字符将无法渲染。2、Overflow 不支持 SHRINK。3、不能参与动态合图(同样启用 CHAR 模式的多个 Label 在渲染顺序不被打断的情况下仍然能合并 Draw Call)

    注意

    • Cache Mode 对所有平台都有优化效果。
    • BITMAP 模式取代了原先的 Batch As Bitmap 选项,旧项目如启用了 Batch As Bitmap 将自动迁移至该选项。
    • 使用 CHAR 模式时不能剔除 项目 -> 项目设置 -> 模块设置 面板中的 RenderTexture 模块。

    详细说明

    Label 组件可以通过往 属性检查器 里的 Font 属性拖拽 TTF 字体文件和 BMFont 字体文件来修改渲染的字体类型。如果不想继续使用字体文件,可以通过勾选 Use System Font 来重新启用系统字体。

    使用艺术数字字体需要创建 艺术数字资源,参考链接中的文档设置好艺术数字资源的属性之后,就可以像使用 BMFont 资源一样来使用艺术数字了。

    BMFont 与 UI 合图自动批处理

    从 Creator 1.4 版本开始, BMFont 支持与 UI 一起合图进行批量渲染。 理论上,如果你的游戏 UI 没有使用系统字体或者 TTF 字体,并且所有的 UI 图片资源都可以合在一张图上,那么 UI 是可以只用一个 Draw Call 来完成的。 更多关于 BMFont 与 UI 合图自动批处理的内容,请参考 BMFont 与 UI 合图自动批处理