FText

包含虚幻引擎4参考和指南的产品文档

Windows
MacOS
Linux

在虚幻引擎4(UE4)中,文本本地化的主要组件是 FText 类。此类通过提供下列功能支持文本本地化,因此面向用户的所有文本都应使用此类:

Ftext 同时具有 AsCultureInvariant 函数(或 INVTEXT 宏),可创建非本地化的(即“语言不变”)文本。这在进行如将玩家名从外部API转换为可在用户界面显示的文本等操作时,十分有用。

可使用 FText::GetEmpty() 或仅使用 FText(),创建空白 FText

转换

FTextFstring`` 间可相互转换。但FText包含与本地化数据关联的字符串,而FString` 仅包含一条字符串,因此以上方法固然会造成损失,将废弃(或无法创建)本地化数据。另一方法是文本值整理,其可提供无损转换,但该方法产生的数据更适合内部整理,而非供用户查看。

下列转换函数可生成不含本地化数据的 FText 字符串:

FText 函数

描述

AsCultureInvariant

以现有 FString 创建非本地化且语言不变的 FText 实例。

FromString

以现有 <code>FString 创建非本地化的 Ftext 实例。

此效果等同于非编辑器版本中的 AsCultureInvariant。在编辑器版本中,此函数不会将文本标记为语言不变,也就是说若将其指定到已保存资源中的 FText 属性,其仍为可本地化状态。

FromName

以现有 FName 创建非本地化的 FText 实例。此效果等同于在 FName 参数的 ToString 函数输出上调用 FromString

要从 FText 转换为 FString,请使用 ToString 函数。得到的 FString 将包含 FText 的字符串数据,但不包含本地化数据。

比较

FText 数据比简单字符串复杂,因此其不支持重载运算符比较。相反,其提供多个函数,以执行识别其中细微数据的比较。可用下列比较函数:

FText 函数

描述

EqualTo

此函数使用 ETextComparisonLevel值决定要使用的比较规则。其返回 布尔,表明在此类比较规则下,调用 FText 是否与其他函数匹配。

EqualToCaseIgnored

此函数为包装,用于以 ETextComparisonLevelSecond 值调用 EqualTo。返回值直接来自 EqualTo

CompareTo

此函数使用 ETextComparisonLevel值决定要使用的比较规则。与多数字符串或内存比较函数相同,其会返回 int32,其中零表示相等,而负值或正值分别表示调用 FText 的序位低于或高于 FText 参数。

CompareToCaseIgnored

此函数为包装,用于以 ETextComparisonLevelSecond 值调用 CompareTo。返回值直接来自 CompareTo

在用户界面中使用FText

Slate/UMG

Slate和UMG使用内置控件的 FText 属性或参数,此类内置控件显示或控制面向用户文本。建议使用用户构建的自定义控件的 FText

HUD/画布

要利用带画布的HUD系统显示 FText,新建 FCanvasTextItem 并将其 Text 变量设为要显示的文本,如下放范例代码所示:

// Create a new FCanvasTextItem instance to contain the text.
FCanvasTextItem TextItem(FVector2D::ZeroVector, TestHUDText, BigFont, FLinearColor::Black);
// Add the text into the FCanvasTextItem.
TextItem.Text = FText::Format(LOCTEXT("ExampleFText", "You currently have {0} health left."), CurrentHealth);
// Draw the text to the screen with FCanvas::DrawItem.
Canvas->DrawItem(TextItem, 10.0f, 10.0f);

在HUD中使用画布时,须在 DrawHUD 函数中调用 DrawItem,或者在以 DrawHUD 开头的函数链中调用该函数。

Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见