本节主要介绍FName、FText 和 FString三个的异同
一、FName
在 内容浏览器 中为新资源命名时,变更动态材质实例中的参数或访问骨骼网格体中的一块骨骼时需要使用 FNames。FNames 不区分大小写。它们为不可变,无法被操作。
1 创建 FNames
FName TestHUDName = FName(TEXT("ThisIsMyTestFName"));
2 转换
FNames 只能被转换为 FStrings 和 FText,只能从 FStrings 进行转换。
从 FName
到 FName
对比
== 运算符用于对比两个 FNames,返回 true 或 false。它并不执行字符串的对比,而是对比索引中的数值,可极大地节约 CPU 开销。
FName::Compare 还可用于对比两个 FNames。如小于 Other 将返回小雨 0;如等于 Other 将返回 0;如大于 Other 将返回大于 0。
CompareFloat = TestFName.Compare(OtherFName);
使用 FName
FName 的使用简单直接。例如您需要从 Actor 的骨骼网格体组件中选择名为“pelvis(骨盆)”的骨骼。以下的 C++ 代码展示了即时构建的 FName 的使用,它将同时被传递到 GetBoneRotation()。
FRotator rotPelvis = Mesh->MeshGetInstance(this))->GetBoneRotation(FName(TEXT("pelvis")));
搜索名称表
如需确定 FName 是否在名称表中(但不希望进行自动添加),可在 FName 构建函数中补充一个不同的搜索类型:
if( FName(TEXT("pelvis"), FNAME_Find) != NAME_None