📜  ue4 从蓝图执行委托 - C++ (1)

📅  最后修改于: 2023-12-03 15:35:27.049000             🧑  作者: Mango

UE4 从蓝图执行委托 - C++

在UE4中,委托(Delegate)是一种非常强大的机制,使得事件驱动的编程更加轻松和便捷。通过使用委托,我们可以在蓝图中调用C++函数并传递参数,同样也可以在C++中调用蓝图中绑定的事件,达到互通的目的。

本文将介绍如何使用UE4的委托机制,从蓝图中执行绑定的委托,并编写相应的C++代码。

步骤一:创建委托

首先,我们需要在C++代码中创建一个委托。创建委托的方法非常简单,在.h文件中声明一个委托类型即可,例如:

DECLARE_DELEGATE(FMyDelegate);

这里声明了一个名称为FMyDelegate的委托类型,我们可以在之后的代码中使用它。

步骤二:设置蓝图中的委托

接下来,在我们的蓝图中,创建一个事件,并将其绑定到该委托上。在事件图表中,右键单击要绑定的委托,选择“Create Event”选项,创建一个新的事件。

然后,在事件的详情面板中,选择该事件需要绑定的委托类型。你可以从下拉菜单中选择任何已声明的委托类型。

最后,拖动事件到图表中并连接到需要执行该委托的蓝图节点上。

步骤三:在C++中执行委托

一旦我们在蓝图中绑定了委托,我们就可以在C++中执行该委托了。为此,我们需要使用一些UE4的特殊语法。

首先,我们需要声明一个代表委托的指针。例如:

FMyDelegate MyDelegate;

然后,我们可以使用一个特殊的宏绑定该指针到它在蓝图中的位置。例如:

DECLARE_EVENT_OneParam(UMyClass, FMyDelegate, int32);

最后,要从C++中执行该委托,我们可以使用一些特殊的语法,例如:

if (MyDelegate.IsBound())
{
    MyDelegate.Execute(SomeInteger);
}

这里,IsBound()方法用于检查该委托是否绑定到了某个事件中,Execute()方法则用于执行该委托,并传递必要的参数,例如这里的SomeInteger。

总结

通过以上步骤,我们可以从蓝图中执行C++中的委托,也可以在C++中执行蓝图中绑定的委托。委托为我们提供了一种非常灵活的机制,可以帮助我们轻松处理各种事件和情况。