Version: Unity 6.0 (6000.0)
语言 : 中文
颜色表情
用户界面工具包文本设置资产

高级文本生成器

高级文本生成器 (Advanced Text Generator) 是一个文本渲染模块,使用 HarfbuzzICUFreeType 提供全面的 Unicode 支持和文本塑造功能。

借助高级文本生成器,您可以使用各种语言和脚本,例如阿拉伯语、希伯来语等从右到左 (RTL) 的语言。

启用高级文本生成器

  1. 从菜单中选择编辑 (Edit) > 项目设置 (Project Settings) > UI 工具箱 (UI Toolkit)
  2. 选中启用高级文本生成器 (Enable Advanced Text Generator) 复选框。

使用高级文本生成器

要使用高级文本生成器,必须要使用支持目标语言的字体资源。例如,如果要使用阿拉伯文,必须使用支持阿拉伯文的字体资源。高级文本生成器仅支持动态字体资源。在项目中使用高级文本生成器之前,必须将字体导入项目并以此创建动态字体资源

在 UI Builder 中

要在__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary
Builder 中使用高级文本生成器,请执行以下操作:

  1. 选择要应用于的视觉元素。
  2. 在检视面板 (Inspector) 窗口中,选择文本 (Text)
  3. 高级文本生成器 (Advanced Text Generator) 下拉选单中选择高级 (Advanced)

在 USS 中

要在 USS 中使用高级文本生成器,请将 -unity-text-generator 设置为 advanced。例如:

.labelText {
    -unity-text-generator: advanced;
}

在 C# 脚本中

要在 C# 脚本中使用高级文本生成器,请将 TextGeneratorType 设置为 Advanced。例如:

textElement.style.unityTextGenerator = new StyleEnum<TextGeneratorType>(TextGeneratorType.Advanced);

语言方向

语言方向 (Language Direction) 是一个全局 UXML 属性,对应于 HTML 中的 dir 属性。此属性为任何 VisualElement 设置默认的文本方向,并级联到子元素。

语言方向还会影响省略号位置和标点符号位置,一旦添加了对 :dir() 伪状态的支持,还可以根据文本方向有条件地应用样式。

  • 继承(默认值):元素从其父元素继承文本方向。
  • LTR(从左至右):强制元素内的文本从左到右排列。
  • RTL(从右至左):强制元素内的文本从右向左排列。

我们还计划在未来版本中支持 auto 值。auto 值通过分析文本块中的 Unicode 字符来动态确定文本方向。它计算强方向性字符(LTR 或 RTL)的数量,并根据较高的计数设置文本方向。

光标移动

本节介绍了处理双向文本(BIDI 文本)时 Unity 输入字段中的光标移动行为。

逻辑光标移动

Unity 目前遵循 Logical Cursor Movement 方法。这意味着光标根据文本段的方向在双向文本中移动。例如,在一个包含阿拉伯语和英语文本的句子中使用左箭头键时,光标会在阿拉伯语文本中从右向左移动,然后跳到英语文本段的最左边字符处,并继续从左向右移动,直到到达该英语文本段的末尾。

逻辑光标移动示例
逻辑光标移动示例

视觉光标移动

有些应用程序遵循 Visual Cursor Movement 方法。这意味着无论文本的方向如何,光标都会移动到下一个视觉字符,这有时会让用户觉得更直观。我们计划在将来的版本中将光标移动模式作为一个选项。

限制

高级文本生成器有以下限制:

  • 仅支持动态字体资源。
  • 无法自定义字形指标。推荐的最佳做法是使用字体编辑工具根据需要调整指标或修剪字体。

目前尚不支持的一些功能(但有计划在未来版本中提供):

  • 某些富文本标签,包括 <sprite><size><font><space><mark> 和其他一些标签。
  • 间距属性,例如字符、单词和段落间距。

使用高级文本生成器时,项目会包含一个 icudt73l 文件,该文件会占用大量内存,即 4.8MB。未来版本中将对此进行改进。

其他资源

颜色表情
用户界面工具包文本设置资产