C++ 等效蓝图事件调度程序与蓝图事件

C++ equivalent blueprint event dispatcher vs blueprint events

我知道代表相当于调度员。但是有很多不同类型的事件声明。使用 UFUNCTION 宏事件可以使用 BlueprintNativeEvents 和 BlueprintImplementableEvent 来定义。但是然后有 DECLARE_EVENT 宏。我喜欢想太多。有人可以解释调度员、事件和各种类型的事件之间的区别吗?在观察者模式中,调度程序是可观察对象,事件是观察者吗?

当您使用 UFUNCTION BlueprintNativeEvent 和 BlueprintImplementableEvent 时 - 这意味着该函数可以被蓝图覆盖。然后您可以从 C++ 启动蓝图函数。

那么 - 有几种类型的代表:

DECLARE_DELEGATE - 仅限 C++,标准委托,只能绑定一个函数。

DECLARE_MULTICAST_DELEGATE - C++ 仅与标准委托一样,但多个函数可以绑定到它并使用广播函数一次调用。

DECLARE_EVENT - 仅限 C++。就像多播委托,但只有此事件的所有者才能调用广播。

DECLARE_DYNAMIC_MULTICAST_DELEGATE - C++/BP。它就像一个多播委托,但它是可序列化的,并且当您在 UPROPERTY 中使用 BlueprintAssignable 关键字时可以从蓝图中绑定。

我认为 Event Dispatcher 是 DYNAMIC_MULTICAST_DELEGATE 的 BP 等价物。可以给它绑定多个事件,一次性广播。