ue4中反射在c++中的应用

UE4的一大特色莫过于它的反射系统,最近在项目中有需求在C++中调用蓝图的函数或者变量,查找了一些资料,在此做下记录。

函数调用

1
2
3
4
5
6
7
8
9
10
11
12
13
UFunction* Function = Object->FindFunction(TEXT("FunctionName"));
if (Function)
{
struct
{
FString Parm1;
int32 Parm2;
};
FFunctionParms Parms;
Parms.Parm1 = TEXT("Hello World!");
Parms.Parm2 = 1;
ProcessEvent(Function, &Parms);
}

参数调用

1
2
3
4
5
6
UStructProperty* KeyProp = FindField<UStructProperty>(Object->GetClass(), TEXT("ShapedTextOptions")); 
FShapedTextOptions* KeyPropData = KeyProp->ContainerPtrToValuePtr<FShapedTextOptions>(Object);
if (KeyPropData)
{
KeyPropData->bOverride_TextShapingMethod = 1;
}