目的:
解耦,对象化,消息分发等等
UE4事件系统的主要两个组成
1)自定义事件
2)事件调度器
第一步:
自定义事件的创建和使用:
a,首先创建出一个自定义事件
添加自定义事件
b,尝试调取自己创建的事件
调用自定义事件
c,外部调用和创建有参数的事件
创建有参数的自定义事件.png
d,在场景蓝图中触发自定义事件
在场景蓝图中调用自定义事件.png
第二步:
事件调度器的创建和使用拟定一个‘’事件分发 ‘’情景:
A对象吼了一嗓子,B和C听到作出吓一跳的反应;
如何确定何时需要使用事件分发机制:
1,A吼叫后与其再无关系,并且能被所有听力正常的生物听到,形成一对多事件触发条件;
2,B,C属于听力正常的生物,那么需要在出现声音的时候及时获取内容并进行各自对应的应激反应,所以在B,C出生的时候都要注册进听声音事件形成听众;
具体实现:
首先创建一个GameModle 类型作为方便编辑的媒介,然后创建一个新的事件调度器
创建事件调度器
B,C的处理
首先来看B,C,B和C在出生时需要将自身听声音事件注册到消息列队,并且在听到声音后做了相应的实现;
其中假设C适应力较差导致耳聋,将不再需要听声音,如果听到吼叫就将C的听声音事件从消息列队中剔除;
C的蓝图
B的蓝图
A的处理
A需要做的就是按一定频率不断吼叫,(定时触发事件列队的消息发送);
A的蓝图
将A,B,C三个对象放入场景中,显示结果为:
由此可见B,C均接到到事件调用,并且C也在第一调用完后成功将自身事件从列队中剔除;
执行现象
第二步拓展:在场景蓝图中操作事件
我们即将使用手动调用的方式来触发吼叫,所以将A的吼叫计时器给关掉即可
断开A的吼叫计时器
创建临时消息列队
引出CreateEvent节点
当BingEvent to xxxx节点的事件与CreateEvent的Event节点连接后出现selectEvent下拉菜单,我们从中选择吼叫事件来作为触发目标事件;
将事件绑定
运行结果同步骤二,此处不截图了
第三步
制作一个切换模式功能(最后附实例下载):
1)控制器接收目标模式后关闭当前模式,并加载目标模式
2)控制模式在各个事件列队的注册和卸载,确保不出现空的事件引用
具体实现内容:
1)玩家输入鼠标左键切换游戏模式
2)玩家输入键盘按键内容将附加模式名称以标识当前模式
制作过程:
创建一个集成自ActorComponent的基础模式蓝图
创建基础模式类
创建具体模式对象
子类复写父类事件时可以主动调用父类来保留父类实现
模式01蓝图
模式02蓝图
将模式蓝图放入角色控制器
在角色控制器中写入鼠标输入事件
2897290-5405c6ad64be1721.png(194.74 KB, 下载次数: 0)
下载附件 保存到相册
昨天 18:02 上传
继续在角色控制器中编写一段按键输入事件