这里总开关的实现方式是在总开关ActorPowerOff上添加事件调度器PowerOff,其它需要响应这个事件的Actor需要自己初始化相应的事件,并作出合适的处理即可,这里是将PowerOff事件关联上ToggleLight即可实现跟随主开关的开关效果
1. 创建基于Actor的蓝图类,电源总开关BP_PowerSwitch
添加一个StaticMesh并拖放到根节点
在Class Setting中添加上一节中创建的蓝图接口BPI_Interactable(这样就可以用柱子怼他了)
双击Interact添加蓝图事件处理,打一个字符串看看
拖放到地图,运行一下看看(怼上去之后,能打印字符串Power就算交互成功了)
怎么怼?
添加一个事件调度器Event Dispatcher,并拖放到事件图表,选择Call
这里每次玩家调用Interact之后就会触发一次PowerOff事件,这里BP_PowerSwitch并不知道谁会去处理PowerOff事件,它只管派发这个事件
2. 给灯加上PowerOff事件处理
绑定PowerOff事件,因为只用绑定一次,所以可以在Event BeginPlay中做初始化,这里先找到PowerSwitch对象
需要判断下是否有效,地图中可能没有拖放PowerSwitch对象
然后绑定到PowerOff事件,这里选Assign
Assign之后会自动创建一个PowerOff_Event(也可以选bind,然后手动创建这个Event)
然后连线到ToggleLight事件即可在PowerOff事件触发时自动开关灯
完整蓝图
运行试试
多放几个灯试试
3. 让电视机也响应PowerOff号召
打开BP_TV蓝图添加一个自定义事件
把之前定义的开关机效果剪切过去重新连线
响应PowerOff事件
运行试试
其它
- 引擎版本为5.3.2
- 参考:https://neil3d.github.io/assets/pdf/CUC-Week-8.pdf