当前位置: 首页 > 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.dtcms.com/a/327996.html

相关文章:

  • AtCoder Beginner Contest 418 C-E 题解
  • 数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(上篇)
  • python3 undefined symbol: _Py_LegacyLocaleDetected
  • C语言结构体与内存分配:构建复杂数据结构的基石
  • 【AI驱动的语义通信:突破比特传输的下一代通信范式】
  • Git 常用命令速查表
  • 最终章【1】Epson机器人篇
  • 微服务项目中的注册中心——Nacos配置
  • 【每日一题】Day 1
  • ETCD备份
  • Flask + Vue.js 物联网数字大屏实现方案
  • 学习:JS[9]作用域+函数进阶+深入对象+实例成员和静态成员
  • 为什么神经网络的权重矩阵具有低秩特性?如何理解和解释?
  • [Robotics_py] 机器人运动模型 | `update`函数 | 微积分矩阵
  • 线性代数 · 矩阵 | 最小多项式
  • 有限元方法中的数值技术:行列式、求逆、矩阵方程
  • 企业高性能web服务器(1)
  • 腾讯云服务器账户转移操作详解
  • ip归属地批量查询脚本
  • vue2+elementUI实现园型动态步骤条小组件,带缩放功能
  • ENCOPIM, S.L. 参展 AUTO TECH China 2025 广州国际汽车技术展览会
  • 基于STC8单片机的RTC时钟实现:从原理到实践
  • Cloud Computing(云计算)和Sky Computing(天空计算)
  • 自然语言处理关键库解析和使用方法- FuzzyWuzzy
  • kafka初步介绍
  • mysql登录失败 ERROR1698
  • Java零基础笔记15(Java编程核心:Stream流、方法中的可变参数、Collections工具类)
  • Ceph对象池详解
  • 数据分析专栏记录之 -基础数学与统计知识
  • js高阶-总结精华版