UE4 代理 使用与总结

本文探讨了UE4中的代理,包括动态代理和普通代理。动态代理利用UFUNCTION的函数名在运行时绑定,支持多种参数和返回值。文章详细介绍了动态单播和多播的常用宏及示例,并分析了代理执行的安全性,特别是智能指针和UObject成员函数的绑定方法。
摘要由CSDN通过智能技术生成

一、代理的分类与概括

在这里插入图片描述

  1. 何为"动态"代理?
    作者认为"动态"主要体现在 其使用UFUNCTION的函数名绑定。即是在运行期通过反射机制动态的根据函数名查找函数,然后执行的。

  2. 代理的一些 设定

    • 支持返回值
    • 支持绑定最多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 中的说明

  3. 声明代理

    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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值