跳至主要内容

Unreal Delegates

Offical Document

Declaring a Delegate

  • DECLARE_DELEGATE(DelegateName)
  • DECLARE_MULTICAST_DELEGATE(DelegateName)
  • DECLARE_DYNAMIC_DELEGATE(DelegateName)
  • DECLARE_DYNAMIC_MULTICAST_DELEGATE(DelegateName)
SingleMulticastDynamic SingleDynamic Multicast
How many can subscribe?onemanyonemany
Can use from Blueprints?XXOO
Performanceslower than regularslower than regular

Use UDELEGATE for Blueprint

UDELEGATE(BlueprintAuthorityOnly)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FInstigatedAnyDamageSignature);

Parameters & Return Value

Non Dynamic:

  • DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
  • DECLARE_DELEGATE_RetVal(DelegateName)
  • DECLARE_DELEGATE_RetVal_OneParam(DelegateName, Param1Type) Dynamic:
  • DECLARE_DYNAMIC_DELEGATE_OneParam(DelegateName, Param1Type, Param1Name)
  • DECLARE_DYNAMIC_DELEGATE_RetVal(DelegateName)
  • DECLARE_DYNAMIC_DELEGATE_RetVal_OneParam(DelegateName, Param1Type, Param1Name)
  • DECLARE_MULTICAST_DELEGATE[_RetVal, ...]( DelegateName )
  • DECLARE_DYNAMIC_MULTICAST_DELEGATE[_RetVal, ...]( DelegateName )

Subscribe to a Delegate

Single

  • BindLambda
  • BindRaw
  • BindStatic
  • BindSP
  • BindUFUnction
  • BindUObject
  • BindWeakLambda
  • BindThreadSafeSP

Multicast

  • AddLambda
  • AddRaw
  • AddStatic
  • AddSP
  • AddUFunction
  • AddUObject
  • AddWeakLambda
  • AddThreadSafeSP

Dynamic Single

  • BindDynamic

Dynamic Multicast

  • AddDynamic
  • AddUniqueDynamic

Call the delegate

Single:

  • Execute
  • ExecuteIfBound Multicast:
  • Broadcast