📜  ue4 ftext c++ (1)

📅  最后修改于: 2023-12-03 14:48:08.845000             🧑  作者: Mango

UE4 FText C++介绍

什么是FText

FText是UE4中用来处理文本的数据类型。它是国际化和本地化的关键,它提供了一种方式来存储和呈现用户可读的文本,而不管其语言或字符集是什么。

FText经常与FString和TCHAR配合使用,它们被用来处理计算机可读的字符串和字符。

FText的创建

要创建一个FText对象,可以使用FText::FromString()静态方法:

FText MyText = FText::FromString(TEXT("Hello World!"));

从字符串中创建FText时,需要注意它的引号。在UE4中,使用TEXT宏来表示字符串文本。在引号前面加上TEXT宏是一个良好的习惯,可以确保你在不同平台上都能正确地编译你的代码。

如果你想创建一个空的FText,可以使用默认构造函数:

FText MyEmptyText = FText();
FText的本地化

想要FText在多个语言之间切换时具有正确的文本,需要对文本进行本地化。UE4使用Game Internationalization系统(GINT)来简化和自动化这个过程。

假设你想要将上面的“Hello World!”本地化为西班牙语。你可以创建一个名为MyText.po的文件,其中包含以下内容:

msgid "Hello World!"
msgstr "¡Hola mundo!"

然后将此文件导入UE4的本地化管理器中。一旦这样做,你就可以使用UE4的本地化机制来获取正确的本地化文本:

FText MyLocalizedText = FText::FromString(NSLOCTEXT("MyNamespace", "MyLocalizationKey", "Hello World!").ToString());

在这个例子中,“NSLOCTEXT”宏是用于本地化的C++宏之一。第一个参数是一个命名空间,第二个参数是本地化键,第三个参数是默认文本。这样,当在非文本中的编辑器中编辑时,你的默认文本可以很容易地被识别和编辑。

FText的输出和转换

FText对象可以被用于在UE4游戏中呈现文本,它重载了"<<"运算符,所以可以直接输出到标准输出流中:

FText MyText = FText::FromString(TEXT("Hello World!"));
UE_LOG(LogTemp, Log, TEXT("MyText: %s"), *MyText.ToString());

FText对象可以被转换为TCHAR*和FString类型的字符串,如下例所示:

FText MyText = FText::FromString(TEXT("Hello World!"));
TCHAR* MyTCharString = MyText.GetCharArray().GetData();
FString MyFString = MyText.ToString();
总结

FText是UE4中处理文本的标准,并且是国际化和本地化的核心。通过NSLOCTEXT宏,可以确保FText在不同语言环境下都能实现正确的文本输出。FText可以与TCHAR和FString一起使用,以完成字符串和字符处理的需求。