发报机 (event dispatcher)
发报机可以实现命令在关卡蓝图和类蓝图间的相互传递。
先介绍一下发报机的六个命令。
新建一个Event Dispatcher后,拖拽到蓝图中,会发现有六个命令。
第一个命令是call 相当于调用函数的 call funcation
第二命令是bind,必须绑定一个事件,当有event dispatcher被call时,就会触发所绑定的事件。
如下,实现了按X后通过MyDispatcher 调用自定义事件CE_rotate
绑定CE_rotate的操作在游戏一开始就完成了,我们可以把调用myDispatcher的命令放到关卡蓝图中。
这样也实现了按X让BP_N进行旋转的操作。
第三个命令unbind,解除某事件的绑定
第四个命令unbind all,解除所有事件的绑定
如下图,按Q之后原本绑定在myDispatcher的CE_rotate事件就会解除绑定,再按X进行调用也不会旋转了。
最后两个操作用处不大。
第五个命令是event,等价于我们直接创建一个自定义事件。
第六个命令是assign,等价于我们创建一个与DIspatcher相连的自定义事件。
蓝图类之间的事件调度。
在BP_M中,绑定一个自定义事件在BP_N的Dispatcher上。
同时在BP_N中,当它旋转完成后,调用call Dispatcher。所有与之绑定的事件都会被触发。
上图中BP_M的逻辑也可以写在关卡蓝图中,并且还有一种简单的写法。
在场景中选择BP_N,然后在关卡蓝图中点击右键,输入Dispatcher的名称,可以通过MyDispatcher(BP_N)直接绑定事件。
如下图,上下两种写法的作用是等价的。
总结,在某个类蓝图中创建的Dispatcher,可以在其他类蓝图(新建变量)或者关卡蓝图(创建引用)中进行绑定或者调用。一旦当Dispatcher被call,所有与之绑定的事件都会被触发。
ps.不止事件可以绑定到dispatcher上,其实函数也可以。
create event 可以将函数转换成事件绑定到Dispatcher上。
原文:https://www.cnblogs.com/reluctante1/p/12714777.html