在Unreal Engine中,如果你想获取一个AActor中的所有FProperty,可以使用TFieldIterator来遍历特定类的属性。以下是一些关键步骤和示例代码:
-
包含必要的头文件:首先,确保包含了反射相关的头文件。
#include "EngineUtils.h" -
使用
TFieldIterator遍历属性:通过TFieldIterator模板类,你可以遍历一个UClass的所有属性。for (TFieldIterator<FProperty> PropertyIter(YourActorClass); PropertyIter; ++PropertyIter) {FProperty* PropertyIns = *PropertyIter;// 处理每个属性 } -
处理每个属性:在遍历过程中,你可以访问每个
FProperty的实例,并执行所需的操作,例如获取属性名称或值。FString PropertyName = PropertyIns->GetName(); -
转换属性值:如果需要,可以使用
ContainerPtrToValuePtr方法来获取属性值的指针,并进行相应的转换。const void* PropertyValue = PropertyIns->ContainerPtrToValuePtr<void>(ActorInstance); -
导出属性文本:可以使用
ExportTextItem方法将属性值导出为文本格式。FString ValueString; PropertyIns->ExportTextItem(ValueString, PropertyValue, NULL, NULL, 0); -
应用属性的元数据:
FProperty对象还包含有关属性的元数据,这些可以通过GetMetaData方法访问。
通过
//获得Actort的Path
Actor->GetPathName();
//通过Paht找到一个Actor
StaticFindObject(UObject::StaticClass(),nullptr,*Actor->GetPathName());