'UTextRenderComponent::SetText': Passing text as FString is deprecated, please use FText instead (likely via a LOCTEXT)

错误提示就是说接收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等,有需要的时候再翻文档即可。

原文地址:https://www.cnblogs.com/yl-xy/p/13854989.html