UE4 蓝图事件调度器Event Dispatcher

1.事件调度器的含义

事件调度器是蓝图中按照观察者模式(订阅)而添加的。观察者模式较常用的一种设计模式!他具有高效低耦合的特性! 在整个设计链上, 采用有动态这状态改变时主动发出通知,从而达到订阅特性。

观察者模式应当构建对象,应该将对象想象为观察者和被观察者。

2.蓝图中事件调度器的位置

蓝图中时间调度器的位置

3.如何使用事件调度器Event Dispatcher

要使用事件调度器(订阅者模式/观察者模式),至少要两个对象。
案例:
通过一个对象控制场景中所有的灯。

1.灯的创建:

1.创建一个蓝图类,基于Actor的类,命名为Light。
2.给灯添加一个Point Light的组件
添加一个Point Light的组件
3.在场景中复制多个灯

2. 创建一个灯的开关Toggle和事件调度器

1.目的:通过开关控制所有场景中所有的灯,实现统一开/关,不管添加了多少个灯,开关都能统一开灯关灯。
2.创建蓝图类 基于Actor的类,命名为 BP_Toggle
3.在Toggle添加一个事件调度器,给事件调度器取个名字 Dispatcher_ToggleLight添加后不要点编译,确定好了没写错再点编译。
4.将BP_Toggle的输入设置为Player0,方便接收输入来实现开关灯

3.编写开关灯的逻辑

1.在灯的蓝图里添加一个自定义事件Toggle
开关灯逻辑

4绑定上事件调度器

1.便利世界中Actor的队列
2.获得以BP_Light的父类的所有Actor
3.每一个都绑定上事件调度器,使用Bind Event to Dispatch节点
绑定Dispatcher的节点
4.将开关灯的时间与Bind Event to Dispatch Toggle Light连接上,红色连红色。
绑定

5.在Toggle里调用Dispatcher_ToggleLight

打开Toggle类里,使用按键来控制Q,Q的一侧连接Call Dispatch Dispatcher_ToggleLight。
调用事件调度器

4.运行测试

按下Q关灯,再按就开灯。
开灯
关灯。
关灯

5.取消绑定时间调度器

1.使用UnBind Event Dispatch from Dipatcher Toggle Light
取消绑定事件调度器
2.目的:实现一次关闭所有灯,就在也不开灯了
3.测试:
取消绑定后不能在开灯了

6.结构图

结构图

灯的完整蓝图
灯中蓝图所有节点

7.应用

比如你做了一辆车,可以通过时间调度器来实现开车的大灯,如果车灯坏了,就可以在有东西导致它坏了的时候触发接触绑定事件调度器。

再比如:你的一个场景里有个大Boss,有很多小怪,当大Boss愤怒值下降了的时候,就召唤场景里所有的小怪来抵挡,当大Boss死亡了,就将小怪里的召唤的事件调度器解绑了,然后小怪自己溜了。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值