首先,UE4中的delegate和C#里边是一样的,delegate的本质是一个特殊类的对象,它可以储存(一个或多个)函数指针和payload数据(就是除了函数指针,还能存些你调用时候的额外参数)UE4中的delegate类名字中都有signature,这里我们以overlap的回调委托为例:在各种mesh components中,都有这么一个字段
FComponentBeginOverlapSignature OnComponentBeginOverlap;
其中FComponentBeginOverlapSignature这个类就是一个delegate,在这里,他还是一个broadcast delegate,我们看看他的实现
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FiveParams( FComponentBeginOverlapSignature,class AActor*, OtherActor, class UPrimitiveComponent*, OtherComp, int32, OtherBodyIndex, bool, bFromSweep, const FHitResult &, SweepResult);
很显然,这个类的声明使用了UE4的一个宏定义,这个宏是一个系列,是专门用来声明delegate的,毕竟我们不可能自己声明一个delegate类,这太困难。但是使用这个宏,我们可以很方便的声明委托类。首先宏本体有很多种&