[UE]反射

2020/04 03 19:04
UFunction *Injured = this->FindFunction(TEXT("Injured"));
if (Injured)
{
    ProcessEvent(Injured, nullptr);
}

UObject::FindFunction 提供了查找本类函数的功能
AActor::ProcessEvent 提供了执行函数的功能

可以通过使用UTypeName::StaticClass()或者FTypeName::StaticStruct()来获取反射类型对应的UClass以及UScriptStruct

迭代一个UStruct的所有成员,可以使用TFieldIterator:

for (TFieldIterator<UProperty> PropIt(GetClass()); PropIt; ++PropIt)
{
  UProperty* Property = *PropIt;
  // Do something with the property 
}