在 UE4 蓝图中如何使用委托作为参数

1,839 阅读1分钟

“我正在参加掘金社区游戏创意投稿大赛个人赛,详情请看:游戏创意投稿大赛

蓝图使用委托(Delegate)

蓝图(Blueprint)所使用的委托中,当其绑定到 Set Timer by EventEvent Dispatcher 节点时,其中对应存在着该委托所使用的事件。  

这一次,我用 Set Timer by Event 创建了一个例子,但是即使在使用 Event Dispatcher 时,也可以以相同的方式进行绑定。

image.png

通常你不能将函数或宏直接将委托添加到蓝图参数中。

image.png

那该如何处理呢?答案是 “通配符” !

如何通过通配符使用委托

宏有一个名为通配符Wildcard)的类型,它可以用作参数。

image.png

它有点类似 C++ 中的模板。  

通配符被用于 Blueprint 的 foreachloop 等节点。  

例如,如果你想创建一个通配符,意在在 1 秒后执行一个自定义的事件(Event,它将如下所示。

image.png

之后,如果将 Event (作为参数)连接到通配符,通配符类型将被识别为 委托,如下图所示。

image.png

执行结果与使用普通的 set Timer by Event 设置 为 1.0 时相同。

image.png

如何通过函数/宏中使用委托

接下来,将展示如何在函数和宏中使用委托,但是由于是 hacky 的方法,我们 无法保证 操作的安全性。  

从函数或宏节点图中调用 “Set Timer by Event” 节点。 然后,通过连接事件引脚(Event Pin)到输入,可以注册委托(Delegate) 将其作为一个输入 Event 参数。

20191023023923.gif

image.png

函数/宏都可以通过相同的操作注册委托。  

image.png

这是 UE4 的一个小技巧。