当前位置: 首页 > news >正文

UE5.3 C++ 动态多播实战总结

一.遇到不得不用 广播的时候,以前当然也用过,用完就忘。但这次实战,发现确实好用,在特殊情况下,来加强记忆和经验,并不深入原理,重实战。

第一种情形,你的UI需要完成某种,信息通信后的响应。但你网络输入段,到你的widget。中间隔着无数个类,还跨模块。包含容易形成环形引用,这个时候就用动态多播。这里我使用在C++声明了动态多播事件,实现广播调用。响应事件是在蓝图里实现的。

1.声明一个动态多播委托 

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FNoramlEvent);

在 声明动态 单播/多播 委托(DECLARE_DYNAMIC_DELEGATE/DECLARE_DYNAMIC_MULTICAST_DELEGATE)时,DelegateName 参数必须以字符 'F' 开头,否则编译无法通过。

 最好时声明所有委托时,DelegateName 参数都以字符 'F' 开头,这样就没有问题了

2.定义委托

	UPROPERTY(BlueprintAssignable)FNoramlEvent NormalEvent;

因为要在蓝图里实现委托,所以要加UPROPERTY(BlueprintAssignable);

在Widget的逻辑里实现,广播后的UI响应逻辑。

二.一个参数的传递回调 也类似

1.声明委托 再定义委托

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMoveToQueryRowEvent, int32, MoveIndex);
	UPROPERTY(BlueprintAssignable)FMoveToQueryRowEvent MoveToQueryRowEvent;

2.委托

void UQueryRowWidget::MoveToQury()
{UDrawLineSubsystem* TPASystem = GetWorld()->GetGameInstance()->GetSubsystem<UDrawLineSubsystem>();if (!TPASystem) return;if (TPASystem->isRecalling == true){MoveToQueryRowEvent.Broadcast(MoveIndex);}
}

3.绑定

  • BindDynamic( UserObject, FuncName )

  • AddDynamic( UserObject, FuncName )

  • RemoveDynamic( UserObject, FuncName ) 解绑单个

  • Clear全部解绑

动态多播也支持使用Remove和Removeall,用法与多播一样

但这里并没有用到 多播的,多处响应的特点。

我在项目中也是使用的蓝图绑定的,多传了个参数值。

http://www.xdnf.cn/news/1289971.html

相关文章:

  • SQL 生成日期与产品的所有组合:CROSS JOIN(笛卡尔积)
  • JVM宝典
  • 每日五个pyecharts可视化图表-line:从入门到精通 (4)
  • 什么时候用WS(WebSocket),什么使用用SSE(Server-Sent Events)?
  • Pytest项目_day13(usefixture方法、params、ids)
  • 机器学习处理文本数据
  • linux 开机进入initramfs无法开机
  • 串口通信学习
  • 数据分析专栏记录之 -基础数学与统计知识
  • Spring-Cache 缓存数据
  • windows git安装步骤
  • XGBoost 的适用场景以及与 CNN、LSTM 的区别
  • 网络协议——HTTP协议
  • Linux服务:Apache 虚拟主机配置指南:多站点部署三种方式详解
  • 【超详细!题解|两种做法】洛谷P3196 [HNOI2008] 神奇的国度[MCS算法]
  • 深入剖析 React 合成事件:透过 onClick 看本质
  • 过程设计工具深度解析-软件工程之详细设计(补充篇)
  • Nginx 高级配置
  • 【后端】Spring @Resource和@Autowired的用法和区别
  • 通用同步/异步收发器USART串口
  • excel-随笔记
  • [ 数据结构 ] 时间和空间复杂度
  • Python初学者笔记第二十二期 -- (JSON数据解析)
  • VGG改进(2):基于Local Attention的模型优化
  • 【图像算法 - 13】基于 YOLO12 与 OpenCV 的实时目标点击跟踪系统(系统介绍 + 源码详细)
  • 获取数组,字符串,集合的长度
  • C++——高性能组件
  • 算法打卡力扣第88题:合并两个有序数组(easy)
  • 解释 Spring MVC 的工作原理
  • _init__.py的作用