FName/FString/FText 的区别

FName

FName 的字符串一般用在为资源命名或者访问资源时(比如命名的骨骼)需要使用。
它使用一个轻型系统使用字符串,特定字符串会被重复使用,在数据表中也就只存储一次。

  1. 只在内存中存储一次
  2. 不区分大小写
  3. 不能被修改
  4. 查找和访问速度比较快
  5. 内部有一个 HASH 值
    FName 在 Edior 中占 12 个字节,打包 8 字节,FName 的XXXX_12 这样的字符串会被分成 string part 和 number part,估计是为了想不为每个拼接的结果都在 NamePool 中创建一份吧。

FString

FSting 比较类似于标准库的std::string,区分大小写,可修改,每份实例都是单独的内存。

FText

FText 是用于本地化的类,所有需要展示的文本都需要使用 FText,它提供了以下功能:

  1. 创建本地化文本
  2. 格式化文本
  3. 从数字生成文本
  4. 从日期或时间生成文本
  5. 转换文本(大小写转换等)

文档