UE5 学习记录

>> 委托

https://docs.unrealengine.com/5.3/en-US/delegates-and-lamba-functions-in-unreal-engine/

// ==== Normal Delegate
DECLARE_DELEGATE(FDelegate); // Action
FDelegate onHandle; // Action onHandle
onHandle.BindRaw(someClass, &SomeClass::Func);
onHandle.ExecuteIfBound(); // 触发

DECLARE_DELEGATE(FOneParamDelegate, int, value); // Action<int>
FOneParamDelegate onOneParamHandle;
onOneParamHandle.BindRaw(someClass, &SomeClass::FuncOneParam);
onHandle.ExecuteIfBound(10);

// ==== Dynamic Delegate ====
DECLARE_DYNAMIC_DELEGATE(FDyDelegate); // 注: Dynamic Delegate 只能绑定 UFunction()
FDyDelegate onDyHandle;
onDyHandle.AddDynamic(this, &SomeClass::UFunc); // 注: Func 必须是 UFunction()
onDyHandle.ExecuteIfBound();

DECLARE_DYNAMIC_DELEGATE_OneParam(FDyOneParamDelegate, int, value)
FDyOneParamDelegate onDyOneParamHandle;
onDyOneParamHandle.AddDynamic(this, &SomeClass::UFuncOneParam);
onDyOneParamHandle.ExecuteIfBound(99);