FString
FName
FText
最常见的是 FString 类型,FName 和 FText 属于不可变字符串,一经创建其中的内容就无法改变。FString 属于可变字符串,可以对其常规的字符串操作,如分片,大小写转换等操作,编程时使用较多的也是它。三者之间可以进行相互转换。
FName 不区分大小写,主要用于标识资源路径,它的优点就是查找和访问速度快,在游戏开发过程中,如果可以确定字符串是固定不变的数据,如资源路径,或者数据表格原始数据,且无需考虑文本国际化的时候,建议使用FName进行创建。
FText 主要用于文本本地化[4]。如今游戏出海已经成为一种趋势,当你的游戏需要支持不止一种语言时,就需要考虑文本本地化,建议最初时就作出这样设定。文本本地化是一项比较复杂的内容,会单独抽出章节讲解,现在需要需要记住的是,当字符串需要显示给玩家时,使用FText比较合适。
那么三者之间如何进行转化:
//创建一个Fstring
FString MyString = FString(TEXT("I am String"));
//FString转化成FNmae
FName MyName;
MyName = FName(*MyString);
//FString转化成FText
FText MyText ;
MyText = FText::FromString(MyString);
//FName转化成FString
MyString = MyName.ToString();
//FName转化成FText
MyText = FText::FromName(MyName);
//FText转化成FString,不存在FText转化成FName
MyString = MyText.ToString();
//float转化成Fstring
float MyFloat = 10.0f;
FString::SanitizeFloat(MyFloat);
//将整型转化成FString
int32 MyInt = 32;
FString::FromInt(MyInt);
//将bool转化成FString
bool inbool;
inbool ? TEXT("True") : TEXT("false");