16周 5.1 代理

酷酷方画笔 发布于2026-10-19 11:20:43
问题贴图

代理分类: 代理(常规代理)和动态代理 1.代理(常规代理) 特点:在C++中构建只能用于C++的代理 分类:单播和多播 单播:一对一的关系,一个对象只能代理一个通知;可以代理带有返回值的通知(函数) 多播:一对多的关系,一个对象可以代理多个通知 理带有返回值的通知(函数)

问题贴图

2.动态代理 特点:具备反射关系,可以反射给虚幻引擎使用(也就是可以被序列化) 分类: 2.1动态单播:一对一的关系,一个对象只能代理一个通知;不能在蓝图中使用;可以代理带有返回值的通知(函数) 2.2动态多播:一对多的关系,一个对象可以代理多个通知;不能代理带有返回值的通知(函数);在瑨托蓝图中使用

问题贴图

单播代理宏 DECLARE_DELEGATE(DelegateTestFirstName) 代理的通知必须是无参无返回值 DECLARE_DELEGATE_TwoParams(DelegateTestSecondName,int32,FString) 代理的通知必须是无返回值,参数为int32和FString

问题贴图

1.创建代理类型(一般在头文件类上方创建) DECLARE_DELEGATE(DelegateTestFirstName) 代理类型为DelegateTestFirstName 2.根据代理类型实例化代理对象(一般在头文件类内创建) DelegateTestFirstTime DTFN;

问题贴图

3.绑定代理通知(一般在BeginPlay方法中实现) DTFN.BindUObject(this,&ASnakeGameModeBase::Test1); 4.找到事件,执行代理通知(执行回调函数) if(DTFN.IsBound()){ DTFN.Execute(); }

0

酷酷方画笔

关注
  • 提问0

  • 回答0

  • 粉丝0

相关笔记

"> ">