UE4 代理 使用总结
一、代理的分类与概括
-
何为"动态"代理?
作者认为"动态"主要体现在 其使用UFUNCTION的函数名绑定。即是在运行期通过反射机制动态
的根据函数名查找函数,然后执行的。 -
代理的一些 设定
- 支持返回值
- 支持绑定最多4个额外的变量
static void MyFunc(FString str, bool b, int32 i){ } DECLARE_DELEGATE_OneParam(FTestDel, FString); void func() { FTestDel testDel; testDel.BindStatic(&MyFunc, true, 1); testDel.ExecuteIfBound(TEXT("aaaaa")); }
- 支持最多8个函数参数
- 支持绑定const函数
可参看 Engine\Source\Runtime\Core\Public\Delegates\Delegate.h 中的说明
-
声明代理
void Function() | DECLARE_DELEGATE( DelegateName ) void Function( <Param1> ) | DECLARE_DELEGATE_OneParam( DelegateName, Param1Type ) void Function( <Param1>, <Param2> ) | DECLARE_DELEGATE_TwoParams( DelegateName, Param1Type, Param2Type ) void Function( <Param1>, <Param2>, ... ) | DECLARE_DELEGATE_<Num>Params( DelegateName, Param1Type, Param2Type, ... ) <RetVal> Function() | DECLARE_DELEGATE_RetVal( RetValType