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

  • 事件分发器在蓝图编辑器的我的蓝图选项卡中创建。
  • 在我的蓝图(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|解除某个事件的执行。注意对象依旧可以收到信息,只是没有后续行为而已。
  • 14
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗浩多捞

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值