📅  最后修改于: 2023-12-03 14:48:08.845000             🧑  作者: Mango
FText是UE4中用来处理文本的数据类型。它是国际化和本地化的关键,它提供了一种方式来存储和呈现用户可读的文本,而不管其语言或字符集是什么。
FText经常与FString和TCHAR配合使用,它们被用来处理计算机可读的字符串和字符。
要创建一个FText对象,可以使用FText::FromString()静态方法:
FText MyText = FText::FromString(TEXT("Hello World!"));
从字符串中创建FText时,需要注意它的引号。在UE4中,使用TEXT宏来表示字符串文本。在引号前面加上TEXT宏是一个良好的习惯,可以确保你在不同平台上都能正确地编译你的代码。
如果你想创建一个空的FText,可以使用默认构造函数:
FText MyEmptyText = 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对象可以被用于在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一起使用,以完成字符串和字符处理的需求。