UE4-FString、FName、FText介绍

FString

  • FString类似C++ STL中的string,提供字符串插入,拼接,删改,比较,迭代遍历等常见字符串功能。

  • 默认是宽字符"TEXT()", 不允许使用多字符"char*"

TIPS:

设置字符串变量文字时应使用 TEXT() 宏。如未指定 TEXT() 宏,将使用 ANSI 对文字进行编码,会导致支持字符高度受限。传入 FString 的 ANSI 文字需要完成到 TCHAR 的转换(本地万国码编码),以便更高效地使用 TEXT()。

  • FString是唯一允许操作修改字符串的字符串类(比如在字符串结尾再加个字符)。而FName和FText不可操作修改

  • 由于FString是可被修改的,当字符串进行搜索、对比等操作时,消耗比其他字符串类型更大

  • FString可以和数值类型相互转换,比如int,float,bool等。FVector,FRotator等也能转为FString。

//FString to std::string

std::string cstr(TCHAR_TO_UTF8(*UE4Str));

//std::string to FString

FString ue4Str = FString(cstr.c_str()));

  • FString转FName

TestHUDName = FName(*TestHUDString);

  • FString转FText

TestHUDText = FText::FromString(TestHUDString);

FName

  • FName最大特点是具备静态存储特性。相同的字符串只存一次。原理是唯一字符串和一个索引number组合起来存在表中,该特性使得FName查找和访问速度较快。例如比较2个FName是否相等,直接比较它们的索引是否相等,无需进行逐个字符的比较。

  • FName 不区分大小写,也不可变。

  • UE4编辑器中的各种操作命名也用的FName,比如给组件命名等。

  • FName转FString

TestHUDString = TestHUDName.ToString();

  • FName转FText

TestHUDText = FText::FromName(TestHUDName);

FText

FText的概念是玩家可见文本。

  • 界面中的文本框:是用FText来存文本信息

  • 文本格式化功能:FText::Format(LOCTEXT("ExampleFText"," 当前剩余生命值{0}."), CurrentHealth);

  • FText::AsDate:将FDateTime值转换为用户友好的日期表示形式。

  • FText::AsPercent: 可以将浮点数变成百分比形式,0.2 ->20%。

  • 由于要支持未来的多语言版本,服务器不允许直接使用格式化的玩家可见文本FText。

所以FText除了含有原始的字符串外,还包含大量的表现信息。

  • FText转FName

不存在直接转的的方式,可以先转FString,再转FName

  • FText转FString

TestHUDString = TestHUDText.ToString();

如何选择

  • FText

用于字符串表现,显示给玩家看。例如,提示给玩家的信息:

FText::Format(LOCTEXT("ExampleFText"," 当前剩余生命值{0}."), CurrentHealth);

服务器不允许写这种逻辑。

  • FName

不区分大小写,也不操作修改字符串的,查找性能较好。例如,配置组件名字

UPROPERTY(EditDefaultsOnly)

FName TargetComponent;

  • FString

需要区分大小写的,或需要对字符串操作的使用。例如:拼接路径

FString strPath = FPaths::ProjectDir() + TEXT("aa.exe");

Tips:信息含量为FText > FString > FName

高信息转低信息类型时存在信息损耗。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值