Unreal入门,开关04,蓝图通讯的几种方式(总结)

发布时间 2023-12-27 22:56:12作者: BuzzWeek

image

1. 直接调用,一开始做的开关就是这种方式,在地图编辑的时候给开关对象设置好关联的灯的引用,触发的时候直接调用灯提供的开关函数即可

image

1.1 给ActorSwitch添加一个Object Reference成员

image

1.2 在地图编辑器中初始化这个成员,关联到ActorLight

image

1.3 在Overlap事件中通过ActorLight的引用调用ActorLight的ToggleLight实现开关效果

image

运行效果

image

2. 接口调用,这种有点类似于c++中的虚函数,通过Trace射线检测工具,获取碰撞对象,只要该对象实现了预制的接口即可,而不用关心对象具体是什么类型

image

2.1 给ActorLight添加蓝图接口Interactable,并添加蓝图实现Interact

image

2.2 MyChar的事件图表中做Trace射线对象检测的时候会尝试调用Interact接口,如果此对象实现了Interact即可调用到对应的实现,比如开关灯(这里就不用关心对象是什么类型,只关心对象有没有实现Interact接口)

image

运行效果

image

3. 事件调度器,这个就是个典型的观察者模式的应用,电源总开关发布事件,其它需要接收这个事件的Actor订阅这个事件即可实现跟随总开关一起开关灯效果

image

3.1 电源总开关PowerSwitch定义并发布事件

image

3.2 电灯ActorLight绑定PowerOff事件

image

运行效果

image

其它