UE-c++ FName

一. 类介绍

在 内容浏览器 中为新资源命名时,变更动态材质实例中的参数或访问骨骼网格体中的一块骨骼时需要使用 FNames。 FName 通过一个轻型系统使用字符串。在此系统中,特定字符串即使会被重复使用,在数据表中也只存储一次。

FNames 不区分大小写。它们为不可变,无法被操作。FNames 的存储系统和静态特性决定了通过键进行 FNames 的查找和访问速度较快。 FName 子系统的另一个功能是使用散列表为 FName 转换提供快速字符串。

简而言之,可以将经常使用的字符串保存为FName类,它使用映射来节约内存。

二. 创建FName

直接使用构造函数,可以新建一个。

	FName TempName=FName(TEXT("UniqueName"));

三. FName和其他类型转换

FNames 只能被转换为 FStrings 和 FText。

1. FName to Others

	//FName to FString
	const FString TempString=TempName.ToString();
	//FName to FText
	const FText TempText=FText::FromName(TempName);

2. Others to FName

	//FString to FName
	TempName=FName(*TempString);
	//FName to FName
	TempName=FName(*(TempText.ToString()));

四. FName函数操作

1. 属性

	//Set Num
	TempName.SetNumber(1);
	//Get Num
	PRINT(FString::FromInt(TempName.GetNumber()));
	//String size
	PRINT(FString::FromInt(TempName.GetStringLength()));

2. 比较

	const FName TempCompare1=FName(TEXT("123"));
	const FName TempCompare2=FName(TEXT("124"));

	/* The == operator is used to compare two
	 * FNames and returns true or false, It does
	 * not compare strings, but compares values in
	 * indexes, which can greatly save CPU overhead
	 */
	bool bResult;
	bResult=(TempCompare1==TempCompare2);
	//Equal
	bResult=TempCompare1.IsEqual(TempCompare2,ENameCase::CaseSensitive);

	//Compare value (-1,0,1)
	PRINT(FString::FromInt(TempCompare1.Compare(TempCompare2)));
	PRINT(FString::FromInt(TempCompare2.Compare(TempCompare2)));
	PRINT(FString::FromInt(TempCompare2.Compare(TempCompare1)));

3. 判断

	//Is the FName none?
	bResult=TempName.IsNone();
	//Is the FName valid? Use for debug
	bResult=TempName.IsValid();

4. 其他自行练习

五. 其他

宏定义真的很好用

	#define PRINT(String) {if (GEngine){GEngine->AddOnScreenDebugMessage(-1,10.0f,FColor::Red,*(String));}}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值