UE4:反射系统获取UPROPERTY
读取方法
读取UPROPERTY标记的UObject类类型的属性
UE4提供一个迭代器进行字段遍历
TFieldIterator<T>
for (TFieldIterator<UProperty> i ( GetClass() ); i; ++i)
{
// 进行相关操作
UProperty* prop=*i; //i指向一个UProperty
}
获得了UProperty,如果需要进一步访问该属性的Name和Value
Name = prop.GetName();
获取属性的值则需要ContainerPtrToValuePtr
该函数有很多重载
如果是要获取一个UObject类类型的一个Uproperty的值,则
假设该对象为Object,该Uproperty为Property,对应类型为float
float* sourceAddr = Proerty->ContainerPtrToValuePtr<float>(Object);
就可以得到对应的value
也可以考虑封装成模板
类型判断
如果不清楚UProperty对应的类型,可以使用Cast进行判断
比如
如果该Property是bool类型,那么返回值是true
在使用时需要注意想要获取的目标Property的指针非空,不然会直接触发异常中断,UE4直接崩掉。
UE4:反射系统获取UPROPERTY
http://muchenhen.com/posts/36675/