事件分发器在蓝图编辑器的我的蓝图选项卡中创建
事件分发器是蓝图中的一个工具,其概念跟委托、回调、QT的信号槽是完全一样的。
事件分发器的工作流程非常简单:
- 持有事件分发器的Actor(发信者),可以进行广播,即发送一个信号给世界
- 订阅了该消息的Actor,在发信者广播之后会接受到该信号并执行自定义的事件
使用分发器
- 发信者:发信者蓝图中拖出刚创建的事件分发器,选择call节点,这个节点的作用就是将信号发送给世界,连到某个事件后面,可以是输入事件(按键、鼠标点击等),也可以是别的蓝图触发这个事件
- 接收者(可以多个):
- 首先必须获取到发信者的引用
- 接收者蓝图中调用Bind Event to <分发器变量名>,Event处连接一个自定义事件,名字随意,这个事件就是信号发出后,会执行的事件,实际上就是一个回调函数(在信号发出的时候回头来调这个函数)
不要像这样用call,如果用call的话是又给世界中发送一个信号
- 首先必须获取到发信者的引用
只需要上面两个步骤即可完成蓝图通信的通道建立。
Unbind Event 解除绑定事件
如果需要事件分发器发出信号后,接收者不再作出反应,则需要在某个时刻执行Unbind Event,可以是发信者主动解绑所有事件,也可以是接收者决定某个时刻以后不再接收该信号。
- 发信者解除所有绑定事件
- 发信者解除单个绑定事件
自己的蓝图里的某个事件,也能绑定到这个事件分发器,自己响应自己)比如这里按1绑定,按5解绑
- 接收者通过发信者的引用,解绑事件
Event引脚传入要解除的事件
- 某个接收者通过发信者的引用解绑所有接收者的绑定