Bootstrap

c++中获取蓝图组件_通过UE4C++反射调用UE4蓝图函数

大家好,这节我们来讲解一下如何通过UE4C++调用任意的UE4蓝图函数。

其实用法很简单。

首先在蓝图里面建立如下的函数,我这边是在GameMode里面建立的:

然后我们在我们的CPP里面加入如下代码:

下面的代码中用到了元祖,如果不了解UE4元祖可以查看以下文章人宅:UE4 TTuple 使用技巧​zhuanlan.zhihu.com42c7d1b63c212800890e4c6020991b6a.png

粘贴如下代码:

template

void ImplementFunction(UClass* OuterClass, UFunction* Function, TTuple& OutParams, TArgs&&... Args)

{

void* FuncPramsStructAddr = (uint8*)FMemory_Alloca(Function->ParmsSize);

uint8* OutPramsByte = (uint8*)&OutParams;

TTuple InParams(Forward(Args)...);

uint8* InPramsByte = (uint8*)&InParams;

if (Function->HasAnyFunctionFlags(FUNC_Native))

{

FFrame Frame(nullptr, Function, &FuncPramsStructAddr, nullptr, Function->Children);

uint8* ReturnParams = nullptr;

//执行无字节码的函数

//注册虚拟机参数列表

FOutParmRec** LastOut = &Frame.OutParms;

for (TFieldIterator ParmIt(Function); ParmIt; ++ParmIt)

{

UProperty *Property = *ParmIt;

;