高级文本生成器是一个文本渲染模块,它使用 Harfbuzz、ICU 和 FreeType 提供全面的 Unicode 支持和文本整形功能。
使用高级文本生成器,您可以使用多种语言和 脚本一段代码,允许您创建自己的组件,触发游戏事件,随着时间的推移修改组件属性并以您喜欢的任何方式响应用户输入。 更多信息
参见 词汇表,例如阿拉伯语和希伯来语等从右到左 (RTL) 语言。
要使用高级文本生成器,您必须使用支持您要使用语言的字体资产。例如,如果您要使用阿拉伯语,则必须使用支持阿拉伯语的字体资产。高级文本生成器仅支持动态字体资产。在您的项目中使用高级文本生成器之前,您必须将字体导入到您的项目中并 创建动态字体资产。
要使用 UI 生成器中的高级文本生成器,请执行以下操作
VisualElement
类。您可以设置外观样式,定义行为,并在屏幕上显示它作为 UI 的一部分。 更多信息要在 USS 中使用高级文本生成器,请将 -unity-text-generator
设置为 advanced
。例如
.labelText {
-unity-text-generator: advanced;
}
要在 C# 脚本中使用高级文本生成器,请将 TextGeneratorType
设置为 Advanced
。例如
textElement.style.unityTextGenerator = new StyleEnum<TextGeneratorType>(TextGeneratorType.Advanced);
语言方向是一个全局 UXML 属性,它对应于 HTML 中的 dir 属性。此属性为任何 VisualElement 设置默认文本方向,并级联到子元素。
语言方向也会影响省略号位置、标点符号放置,并且一旦对 :dir() 伪状态添加支持,就可以根据文本方向有条件地应用样式。
我们还计划在未来的版本中支持 auto
值。auto
值通过分析文本块中的 Unicode 字符动态确定文本方向。它计算强方向字符(LTR 或 RTL)的数量,并根据较高的数量设置方向。
本节说明 Unity 的输入字段在处理 双向文本 (BIDI 文本) 时光标移动的行为。
Unity 目前遵循 逻辑光标移动
方法。这意味着光标通过双向文本移动基于文本段的 direction。例如,在包含阿拉伯语和英语文本的句子中使用左箭头键,它会从右到左移动穿过阿拉伯语,然后跳到英语段中最左边的字符,然后从左到右继续移动,直到到达段的末尾。
一些应用程序遵循 视觉光标移动
方法。这意味着光标移动到下一个视觉字符,而不管文本的方向如何,这有时会让用户感觉更直观。我们计划在未来的版本中使光标移动模式成为一个选项。
高级文本生成器具有以下局限性
某些功能尚未得到支持,但计划在未来的版本中提供
<sprite>
、<size>
、<font>
、<space>
、<mark>
和其他一些标签。当您使用高级文本生成器时,您的项目将包含一个 icudt73l
文件,该文件具有 4.8MB
的重大内存占用。这将在未来的版本中得到改进。