UE4蓝图通信-事件分发器(Event Dispatcher)

  • 事件分发器在蓝图编辑器的我的蓝图选项卡中创建。
  • 在我的蓝图(My Blueprint) 面板中的
    在这里插入图片描述
    进行创建
  • 输入事件分发器的名称,该字段显示在 我的蓝图(My Blueprint) 选项卡中列表的末尾。
    -

流程

  • 发信者利用事件分发器 发送消息给世界
  • 发信者无法从接收者那里获取到任何信息即返回值、也不知道谁收到了消息。
  • 带有信息接收器的人,会接受到该消息并执行后续动作。
  • 比如:BOSS死亡引起灯灭、草燃、音乐停、重见天日等。
  • 发信者处变量栏下面添加“分发器”,细节面板可以设置目录名字;下面有inputs 注意没有outputs 说明这是个事件 不带输出只有输入。copy signature from 可以不管。

使用分发器

  • 发信者:发信者蓝图中拖出刚创建的事件分发器,选择call,连到某个事件后面,可以是输入事件(按键、鼠标点击等),也可以是别的蓝图触发这个事件,之后发出一个调用信号。
    在这里插入图片描述UE4蓝图通信-事件分发器(Event Dispatcher)_第1张图片
  • 接收者:先获得发信者的引用,这整个部分就充当着接收消息的接收器
    UE4蓝图通信-事件分发器(Event Dispatcher)_第2张图片
  • 接收者蓝图中调用Bind Event to XXXX,Event处连接一个自定义事件,名字随意
    UE4蓝图通信-事件分发器(Event Dispatcher)_第3张图片
    不要像这样用call,如果用call的话是又给世界中发送一个信号
    UE4蓝图通信-事件分发器(Event Dispatcher)_第4张图片
  • 这里就完成了通信,可以在多个蓝图类中创建接收器,接受玩家的消息然后做出不同的动作。

Unbind Event 解除绑定事件

如果需要事件分发器发出的消息,接收者不再作出反应了,则需要Unbind Event,逻辑写在接收者中

  • 玩家引用中Default下有两个函数
    1.解除所有分发器的绑定事件
    2.解除指定(当前)蓝图中的绑定事件
    UE4蓝图通信-事件分发器(Event Dispatcher)_第5张图片
  • 1、单个对象解除绑定,event引脚传入要被解除的事件
    UE4蓝图通信-事件分发器(Event Dispatcher)_第6张图片
  • 2、所有对象解除绑定:一旦执行则所有对象中的绑定事件都被解除,不再执行后面的自定义事件了。
    UE4蓝图通信-事件分发器(Event Dispatcher)_第7张图片
  • 分发器仍然在发信息,我也接收到了 但是不做事 因为相当于所有接收者的绑定事件的连线被断掉了。

事件分发器总结

  • 发信者通过事件分发器发出信息, 在其他actor蓝图中如果从”发信者引用”里拖出了|bind event|,则这个actor的对象可以接受信息,并进行下一步自定义事件。
  • 如果要让本来可以接收到信息的某个actor不再作出反应,则要某个时候调用一次|Unbind event|解除某个事件的执行。注意对象依旧可以收到信息,只是没有后续行为而已。

你可能感兴趣的:(UE4,ue4,unreal,c++)