关于UEC++中FText、FString与FName
FText
用于本地化和用户界面显示文本。可以方便地将游戏文本翻译成不同的语言。
FName
FName在UE中的功能与C#中的字符串池有相似之处,但它们的内部实现和用途有些不同。
FName是一种轻量级的、不变的标识符类型,主要用于高效地处理字符串的比较和存储。
特点:
不可变: 一旦创建,FName的值不能改变。
高效比较: 两个FName对象之间的比较非常高效,因为它们内部使用索引进行比较,而不是逐字符比较。
内存优化: FName通过内部字符串表(类似于字符串池)存储唯一的字符串副本,从而减少内存开销。
哈希表支持: 适合用作键值对中的键或其他需要快速查找的场景。
在C#中,字符串池(string intern pool)是一个全局表,用于存储所有唯一的不可变字符串字面量。当创建新的字符串时,如果字符串内容相同,则引用池中的现有字符串。
特点:
不可变: C#中的字符串也是不可变的,一旦创建了就不能改变其内容。
自动驻留: 编译时,所有字符串字面量会自动添加到字符串池中。
手动驻留: 可以使用String.Intern方法将运行时创建的字符串添加到池中。
内存优化: 通过共享相同内容的字符串实例来节省内存。
FString:
用于非本地化的常规字符串操作,例如文件路径、日志输出、内部数据处理。
特点:
提供字符串操作功能(如拼接、查找、替换等)。
开销相对较低,适合频繁的字符串操作。
文件路径、配置参数等不需要本地化的文本。