相当于C++的蓝图事件调度器与蓝图事件的对比

问题描述 投票:0回答:1

我知道delegates相当于dispatchers。但是事件声明有这么多种不同的类型。使用UFUNCTION宏可以使用BlueprintNativeEvents和BlueprintImplementableEvent定义事件。但是还有DECLARE_EVENT宏。我喜欢胡思乱想,谁能解释一下调度器、事件和各种类型的事件之间的区别?派遣器是观察者模式中的观察者,事件是那些观察者模式中的观察者吗?

c++ unreal-engine4 unreal-blueprint
1个回答
2
投票

当你使用UFUNCTIONs BlueprintNativeEvent和BlueprintImplementableEvent时--意味着这个函数可以被一个蓝图覆盖。然后,你可以从c++中启动一个蓝图函数。

然后--有几种类型的委托。

DECLARE_DELEGATE - 仅限C++,标准委托,只有一个函数可以绑定到它。

DECLARE_MULTICAST_DELEGATE,标准委托,只能绑定一个函数。 - 仅仅是C++中的标准委托,但多个函数可以绑定到它上,并使用Broadcast函数同时调用。

DECLARE_EVENT - 仅限C++。就像一个多播委托,但只有这个事件的所有者可以调用Broadcast。

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

我想,Event Dispatcher是DYNAMIC_MULTICAST_DELEGATE的BP唯一等价物。你可以将多个事件绑定到它上面,然后一次广播。

© www.soinside.com 2019 - 2024. All rights reserved.