虚幻4 Event、CustomEvent、EventDispatcher

来源:互联网 发布:易语言编程 编辑:程序博客网 时间:2024/05/29 16:38

经常接触到这些概念,今天做个总结,不涉及具体的细节,参数啊,调用啊,绑定啊等等,只是概念的区别。学术浅薄,各位一块探讨指正哈。
Event是虚幻内置的事件,这个事件什么时候被调用由引擎决定,如常见的

Event Hit这里写图片描述

Event Begin Play这里写图片描述

Event Actor Begin Overlap这里写图片描述

Event Actor End Overlap这里写图片描述

CustomEvents自定义事件,可以自定义事件执行的代码,在任何蓝图里执行,使用 Call Function下的自定义事件名称调用事件,允许多次调用。
很多时候完全把这里的事件理解为函数即可,只是没有输入参数而已。
这里写图片描述这里写图片描述

EventDispatcher事件调度器,可以将多个自定义事件绑定到某个事件调度器上,当这个事件调度器被调用时,所有绑定事件都会执行。同样的,调用事件调度器使用Call节点,也可以多次调用,且可以在任何类蓝图或者关卡蓝图调用。

c#中也有事件的概念,事件是特殊的委托,只能在定义事件的类内部触发事件,而外部只允许对事件注册或者注销方法。这样的机制可以很好的维护事件的触发正确性,防止被外界随意出发,造成混乱。

显然,虚幻里的事件Event和C#的事件不是一个概念。但是,EventDispatcher事件调度器从本质上来讲挺像C#的事件的,都可以注册方法(事件)、注销方法(事件),都是调用一次,全部注册方法(事件)执行,属于订阅式的消息传播制。

但是,虚幻的EventDispatcher事件调度器可以在定义该调度器的外部调用,感觉这样不如c#处理的合理。
如果任何的蓝图里都可以调用事件调度器,那最后难免会出现不知道在哪里、在何时该事件调度器被调用的情形,这样的情形显然是不科学、容易出错的。

0 0