蓝图有一个非常有用的机制,称为事件调度程序。
事件调度程序是一种允许在不同蓝图之间自由定义并随时生成事件的机制,这允许其他蓝图处理诸如蓝图事件之类的事情。
此外,事件调度程序可以在同一次调用中调用完全不同的逻辑,当希望同一事件根据蓝图执行不同的操作时,这非常有用。
创建事件源
首先,创建事件源。
使用喜欢的任何名称创建一个新蓝图,继承源可以是任何东西,但这次将创建一个适当继承 Actor 的类。现在,将此蓝图命名为“EventSend_BP”,并创建一个以类似方式接收事件的蓝图,假设名称是“EventReceive_BP”。
接下来,向组件中添加一个 Box 组件,以在 EventSend_BP 中创建事件。
在这种状态下,放置暂时创建的两张蓝图。
注:EventReceive_BP 没有外观,所以即使放在关卡上也没有变化。

然后给 Box 组件添加一个“OnComponentBeginOverlap”事件。

这将是本次活动的由来,当然,即使不是这个事件,它也可以随时生成,所以请自行设置触发的事件。
创建事件调度程序
通过按“我的蓝图”选项卡中“事件调度程序”的添加按钮来添加事件调度程序,你可以拖拽自适应放大一下窗口,这样看的更清除一些。
事件调度程序的名称只是“TestEventDispatcher”。
现在剩下就是调用事件调度程序的调用节点。
右键单击并选择“Call TestEventDispatcher”来调用该节点,然后将其连接到 Box 的 Overlap 事件。

最后的打印字符串用于确认,到目前为止的所有工作都是在 EventSend_BP 上完成的。
事件接收器设置
现在编辑事件接收器,名为 EventReceive_BP 的一个,并创建一个新变量。

将变量类型设置为 EventSend_BP 类型。此外,请检查变量名称右侧的眼睛图标是否已开启。现在可以在外部设置此变量。
接下来,从 Blueprint 窗口返回 Level Editor 窗口,选择放置的 EventReceive_BP,并在“Default”中的变量中指定要设置的actor。

现在可以识别从接收器发送的事件的来源。
接下来,创建接收事件的蓝图。

将事件发送 BP 变量作为获取节点放置在图表上,从该节点扩展和删除它时,选择“分配 TestEventDispatcher”。
这会自动绑定事件并创建自定义事件。之后,在事件开始播放时进行绑定,请注意,除非绑定是强制的,否则不会调用该事件。
触发事件并调用自定义事件
现在,如果渗透到事件发起的 Box,则应将自定义事件调用为事件调度程序。

可以看到,先进行接收端的事件处理,然后将处理返回给发送端。
尝试用关卡蓝图接收
另外,我会尝试让从这里以同样的方式接收关卡蓝图成为可能。
在关卡蓝图中,在关卡编辑器的视口或场景大纲器中选择发送者 actor 后,可以通过右键单击添加对目标 actor 的引用。

现在可以像 EventReceive_BP 一样引用发送方,所以用同样的方式创建一个蓝图。

一旦处于此状态,关卡蓝图和其他蓝图将能够使用事件调度程序将同一事件作为单独的流调度(分配)。

依此类推,事件调度程序触发事件使它们做完全不同的事情,并且还有助于关卡蓝图和类蓝图之间的通信。
使用它的方法有很多种,会发现可以进行非常智能的事件处理。
…
以上是3D天堂关于在UE蓝图中使用事件调度程序的全部内容,如果你有任何反馈,请随时在本页面下方留言。