Choose your operating system:
Windows
macOS
Linux
在虚幻引擎4(UE4)中,文本本地化的主要组件是 FText
类。此类通过提供下列功能支持文本本地化,因此面向用户的所有文本都应使用此类:
Ftext
同时具有 AsCultureInvariant
函数(或 INVTEXT
宏),可创建非本地化的(即"语言不变")文本。这在进行如将玩家名从外部API转换为可在用户界面显示的文本等操作时,十分有用。
可使用 FText::GetEmpty()
或仅使用 FText()
,创建空白 FText
。
转换
FText
和 Fstring`` 间可相互转换。但
FText 包含与本地化数据关联的字符串,而
FString` 仅包含一条字符串,因此以上方法固然会造成损失,将废弃(或无法创建)本地化数据。另一方法是文本值整理,其可提供无损转换,但该方法产生的数据更适合内部整理,而非供用户查看。
下列转换函数可生成不含本地化数据的 FText
字符串:
|
描述 |
---|---|
|
以现有 |
|
通过现有的 此效果等同于非编辑器版本中的 |
|
以现有 |
要从 FText
转换为 FString
,请使用 ToString
函数。得到的 FString
将包含 FText
的字符串数据,但不包含本地化数据。
比较
FText
数据比简单字符串复杂,因此其不支持重载运算符比较。相反,其提供多个函数,以执行识别其中细微数据的比较。可用下列比较函数:
|
描述 |
---|---|
|
此函数使用 |
|
此函数为包装,用于以 |
|
此函数使用 |
|
此函数为包装,用于以 |
在用户界面中使用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
开头的函数链中调用该函数。