版本: Unity 6 (6000.0)
语言 : 英语
颜色渐变
面板文本设置资产

高级文本生成器

高级文本生成器是一个文本渲染模块,它使用 HarfbuzzICUFreeType 提供全面的 Unicode 支持和文本整形功能。

使用高级文本生成器,您可以使用多种语言和 脚本一段代码,允许您创建自己的组件,触发游戏事件,随着时间的推移修改组件属性并以您喜欢的任何方式响应用户输入。 更多信息
参见 词汇表
,例如阿拉伯语和希伯来语等从右到左 (RTL) 语言。

启用高级文本生成器

  1. 从菜单中选择 编辑 > 项目设置 > UI 工具包
  2. 选中 启用高级文本生成器 复选框。

使用高级文本生成器

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

在 UI 生成器中

要使用 UI 生成器中的高级文本生成器,请执行以下操作

  1. 选择您要应用的 视觉元素视觉树中的一个节点,它实例化或派生自 C# VisualElement 类。您可以设置外观样式,定义行为,并在屏幕上显示它作为 UI 的一部分。 更多信息
    参见 词汇表
  2. 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
    参见 词汇表
    面板中,选择 文本
  3. 高级文本生成器 下拉菜单中选择 高级

在 USS 中

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

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

在 C# 脚本中

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

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

语言方向

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

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

  • 继承(默认):元素从其父级继承文本方向。
  • LTR(从左到右):强制元素内的文本从左到右流动。
  • RTL(从右到左):强制元素内的文本从右到左流动。

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

光标移动

本节说明 Unity 的输入字段在处理 双向文本 (BIDI 文本) 时光标移动的行为。

逻辑光标移动

Unity 目前遵循 逻辑光标移动 方法。这意味着光标通过双向文本移动基于文本段的 direction。例如,在包含阿拉伯语和英语文本的句子中使用左箭头键,它会从右到左移动穿过阿拉伯语,然后跳到英语段中最左边的字符,然后从左到右继续移动,直到到达段的末尾。

Logical Cursor Movement Example
逻辑光标移动示例

视觉光标移动

一些应用程序遵循 视觉光标移动 方法。这意味着光标移动到下一个视觉字符,而不管文本的方向如何,这有时会让用户感觉更直观。我们计划在未来的版本中使光标移动模式成为一个选项。

局限性

高级文本生成器具有以下局限性

  • 仅支持动态字体资产。
  • 无法自定义字形度量。作为变通方法,我们建议使用字体编辑工具调整度量或根据需要修剪字体。

某些功能尚未得到支持,但计划在未来的版本中提供

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

当您使用高级文本生成器时,您的项目将包含一个 icudt73l 文件,该文件具有 4.8MB 的重大内存占用。这将在未来的版本中得到改进。

其他资源

颜色渐变
面板文本设置资产