错误提示就是说接收FString参数的方法被弃用了,需要使用FText作为参数(为了方便本地化)
解决报错只需要改用:
CountdownText->SetText(FText::AsNumber(CountdownTime)); CountdownText->SetText(INVTEXT("GO!"));
还需要在cpp文件头部添加:
#define LOCTEXT_NAMESPACE "MyNamespace"
并在末尾添加:
#undef LOCTEXT_NAMESPACE
以上操作创建了一个本地化的命名空间,从而可以使用LOCTEXT创建FText
代码里有两种方法直接创建FText:
FText LOCTEXT("MyKey", "MyString"); // 本命名空间 FText NSLOCTEXT("MyOtherNamespace", "MyKey", "MyString") // 使用其他命名空间
每个Key对应一个字符串,用Key就可以得到真正展示给用户的字符串,从而方便本地化(虽然写起来麻烦)
如果想要使用字符串格式化,可以:
int32 MyNumber = 755; FText::Format(LOCTEXT("ShowMyNumber", "My Number: {0}"), MyNumber);
一些常用数字的还可以直接使用:
float MyFloat = 1234.5 FText::AsNumber(MyFloat); // 1,234.5 float MyPercent = 0.2; FText::AsPercent(MyPercent); // 20% float MyMemory = 1234; // 字节 FText::AsMemory(MyMemory); // 1.2KiB
还有更多的格式化的可参考文档中关于文本本地化部分
如果只是使用FText而不进行本地化:
FText::AsCultureInvariant("MyString");
或者使用一种简写的格式:
INVTEXT("MyString");
(由于不进行本地化,所以就不需要指定Key了)
同样的,FText的格式化也有许多简写格式,比如FText::AsNumber可以直接用LOCGEN_NUMBER等,有需要的时候再翻文档即可。