- 事件分发器在蓝图编辑器的我的蓝图选项卡中创建。
- 在我的蓝图(My Blueprint) 面板中的
进行创建 - 输入事件分发器的名称,该字段显示在 我的蓝图(My Blueprint) 选项卡中列表的末尾。
流程
- 发信者利用事件分发器 发送消息给世界
- 发信者无法从接收者那里获取到任何信息即返回值、也不知道谁收到了消息。
- 带有信息接收器的人,会接受到该消息并执行后续动作。
- 比如:BOSS死亡引起灯灭、草燃、音乐停、重见天日等。
- 发信者处变量栏下面添加“分发器”,细节面板可以设置目录名字;下面有inputs 注意没有outputs 说明这是个事件 不带输出只有输入。copy signature from 可以不管。
使用分发器
- 发信者:发信者蓝图中拖出刚创建的事件分发器,选择call,连到某个事件后面,可以是输入事件(按键、鼠标点击等),也可以是别的蓝图触发这个事件,之后发出一个调用信号。
- 接收者:先获得发信者的引用,这整个部分就充当着接收消息的接收器
- 接收者蓝图中调用Bind Event to XXXX,Event处连接一个自定义事件,名字随意
不要像这样用call,如果用call的话是又给世界中发送一个信号
- 这里就完成了通信,可以在多个蓝图类中创建接收器,接受玩家的消息然后做出不同的动作。
Unbind Event 解除绑定事件
如果需要事件分发器发出的消息,接收者不再作出反应了,则需要Unbind Event,逻辑写在接收者中
- 玩家引用中Default下有两个函数
1.解除所有分发器的绑定事件
2.解除指定(当前)蓝图中的绑定事件
- 1、单个对象解除绑定,event引脚传入要被解除的事件
- 2、所有对象解除绑定:一旦执行则所有对象中的绑定事件都被解除,不再执行后面的自定义事件了。
- 分发器仍然在发信息,我也接收到了 但是不做事 因为相当于所有接收者的绑定事件的连线被断掉了。
事件分发器总结
- 发信者通过事件分发器发出信息, 在其他actor蓝图中如果从”发信者引用”里拖出了|bind event|,则这个actor的对象可以接受信息,并进行下一步自定义事件。
- 如果要让本来可以接收到信息的某个actor不再作出反应,则要某个时候调用一次|Unbind event|解除某个事件的执行。注意对象依旧可以收到信息,只是没有后续行为而已。