onS*_*ner 1 c++ unreal-engine4 unreal-blueprint
我知道代表相当于调度员。但事件声明的类型有很多种。使用 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 关键字时可以从蓝图进行绑定。
我认为事件调度程序仅相当于 DYNAMIC_MULTICAST_DELEGATE 的 BP。您可以将多个事件绑定到它并立即广播它们。