zoukankan      html  css  js  c++  java
  • '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等,有需要的时候再翻文档即可。

  • 相关阅读:
    3.1C#中的命名空间
    2章总结
    2.4冒泡排序
    2.3 C#中的数组
    2.2二重循环
    2.1c#中的循环语句
    1章总结
    docker内外数据拷贝
    搭建docker环境
    centos7 部署Apache的httpd服务器
  • 原文地址:https://www.cnblogs.com/yl-xy/p/13854989.html
Copyright © 2011-2022 走看看