[目前接触到的Version: UE 4.16.2]
一.简介
UE4 中Event Dispatcher是非常强大的功能,非常适合在各个蓝图之间实现通信。通过将一个或多个事件绑定到事件调度程序,可以在调用事件调度程序后使所有这些事件触发。这些事件可以在Blueprint Class中绑定,但是Event Dispatcher也可以在Level Blueprint中触发事件。
二.原理
Event Dispatcher其实就是C++(C#)中Delegate机制。但是Delegate机制的涵盖范围比事件调度器要大一些(C#中有delegate关键词,可以用来实现delegate机制; event关键词,对应的就是EventDispatcher)。在C#中,delegate是一种类型,它实际上是一个能够持有对某个方法的引用的类。与其它的类不同,delegate类能够拥有一个签名(signature),并且它"只能持有与它的签名相匹配的方法的引用"。
Delegate所实现的功能类似于C++中的函数指针。它允许将一个方法作为变量传递给一个对象,使得这个对象能够调用该方法。但是delegate与函数指针有很大不同,具备更多的优点: