UE5 C++ 蓝图交互调用

 


UE5 C++ 蓝图交互调用_第1张图片


目录

一、C++ 调用蓝图Actor的成员函数

二、蓝图重写C++函数


一、C++ 调用蓝图Actor的成员函数

//调用函数

TWeakObjectPtr _bpActor;
//方法1,外部设置字符串
FString param = TEXT("arg1");
FString cmdReset = TEXT("func1 ") + param ;
//函数名+" "+参数(只能是简单参数,如string,int32等,
//不能是枚举、结构体,函数名和参数使用空格隔开)
FOutputDeviceNull device;
_bpActor->CallFunctionByNameWithArguments(
    cmdReset, 
    device, 
    NULL, 
    true);
//方法2,直接调用
_bpActor->CallFunctionByNameWithArguments(
    TEXT("func2"), 
    device, 
    NULL, 
    true);




//修改变量值,
//示例为bool,所以使用FBoolProperty

for (TFieldIterator boolProperty((_bpActor.Get())->GetClass()); boolProperty; ++boolProperty)
{
    if (boolProperty->GetName().Contains(TEXT("bVar1")))
    {
        boolProperty->SetPropertyValue_InContainer(_bpActor.Get(), true);
    }
}

二、蓝图重写C++函数

//重点
//1:需要被蓝图重写的函数需要使用BlueprintNativeEvent修饰
//2:这个函数还需要添加一个虚函数,XXXXXX+[_Implementation],用于子类的重写,
//为固定格式,亦或可以称为UE版本的虚函数吧

UFUNCTION(BlueprintNativeEvent, Category = "BP| fun1")
    bool fun1();
  virtual bool fun1_Implementation() { return false; };
UFUNCTION(BlueprintNativeEvent, Category = "BP| fun2")
    bool fun2();
  virtual bool fun2_Implementation() { return false; };

你可能感兴趣的:(UE5,ue5,c++)