【UE5 C++课程系列笔记】14——GameInstanceSubsystem与动态多播的简单结合使用

ops/2024/12/27 9:49:09/

效果

 通过在关卡蓝图中触发GameInstanceSubsystem包含的委托,来触发所有绑定到这个委托的事件,从而实现跨蓝图通信。

步骤

1. 新建一个C++类

这里命名为“SubsystemAndDelegate”

 

引入GameInstanceSubsystem.h,让“SubsystemAndDelegate”继承“UGameInstanceSubsystem”

添加如下代码,让反射系统识别 USubsystemAndDelegate类

声明了一个名为 FSubsystemActorLocation 的动态多播委托类型,该委托类型带有两个参数

再添加一个蓝图可访问的函数“CallLocation”用于调用委托

实现函数“CallLocation”,通过Broadcast触发委托SubsystemActorLocationDelegate

完整头文件代码:

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "Subsystems/GameInstanceSubsystem.h"#include "SubsystemAndDelegate.generated.h"DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FSubsystemActorLocation, FString, InActionName, int32, InActionIndex);UCLASS()
class STUDY_API USubsystemAndDelegate : public UGameInstanceSubsystem
{GENERATED_BODY()public:UFUNCTION(BlueprintCallable)void CallLocation(FString InActionName, int32 InActionIndex);UPROPERTY(BlueprintAssignable)FSubsystemActorLocation SubsystemActorLocationDelegate;
};

 源文件:

#include "Subsystem/SubsystemAndDelegate.h"void USubsystemAndDelegate::CallLocation(FString InActionName, int32 InActionIndex)
{SubsystemActorLocationDelegate.Broadcast(InActionName, InActionIndex);
}

2. 编译后,新建一个actor蓝图类,这里命名为“BP_WorkActor”,然后将其拖入场景中

打开“BP_WorkActor”,在事件图表中通过“USubsystemAndDelegate”的委托“SubsystemActorLocationDelegate”来绑定委托事件

3. 在关卡蓝图中通过按下1键调用子系统的函数“CallLocation”,从而触发委托绑定的自定义事件

运行效果如下,可以看到按下1键成功触发委托绑定的打印事件


http://www.ppmy.cn/ops/145338.html

相关文章

vue 嵌套el-dialo,当内层的弹窗弹出时,整个页面被遮罩

活不多说,直接上问题 当在页面上,点击出现第一个弹窗,然后在弹窗里面,点击在再出现一个弹窗时,就是如下效果。 查看Html,出现了遮罩层 Vue的建议是,不建议嵌套 Dialog,但实际上肯定存在嵌套 …

Kafka无锁设计

前言 在分布式消息队列系统中,Kafka 的无锁设计是其高吞吐量和高并发的核心优势之一。通过避免锁的竞争,Kafka 能够在高并发和大规模的生产环境中保持高效的性能。为了更好地理解 Kafka 的无锁设计,我们首先对比传统的队列模型,然后探讨 Kafka 如何通过无锁机制优化生产者…

基于Spring Boot的建材租赁系统

一、系统背景与目的 随着建筑行业的快速发展,建材租赁需求日益增加。传统的建材租赁管理方式大多依赖于纸质文档或简单的电子表格,不仅效率低下,还容易出现信息遗漏和错误。为了解决这些问题,基于Spring Boot的建材租赁系统应运而…

前后端分离(添加用户信息实现思路)

1.先在前端设置一个添加按钮 <el-button type"primary" click"openAddEmployeeDialog">添加员工</el-button> 2.给添加员工绑定事件openAddEmployeeDialog&#xff0c;用户点击该按钮弹出对话框 const openAddEmployeeDialog () > {dial…

前缀树介绍

数风流人物&#xff0c;还看今朝&#xff01; 前缀树 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补全和拼写检查。 前…

DDI-GPT:使用知识图谱增强的大模型对药物相互作用进行可解释的预测

DDI-GPT: Explainable Prediction of Drug-Drug Interactions using Large Language Models enhanced with Knowledge Graphs 是一篇关于药物相互作用&#xff08;DDI&#xff09;预测的研究论文&#xff0c;该研究提出了一个深度学习框架DDI-GPT&#xff0c;它通过结合知识图谱…

JS 数组创建、访问、常用方法

文章目录 创建访问常用属性和相关方法1. length 长度属性2. push() 新增元素 - 末尾添加3. unshift() 新增元素 - 开头添加4. pop() 移除元素 - 末尾删除5. shift() 移除元素 - 开头删除6. concat() 复制数组后新增7. slice() 复制数组8. splice() 增删改9. toString() 转字符串…

STM32低功耗模式结合看门狗

STM32低功耗模式结合看门狗 前言 最近做到一个需求要使用STM32的低功耗模式进行长时间待机应用&#xff0c;每隔十分钟发送一次数据到服务器上&#xff0c;当不发送的时候就处于低功耗模式。在经过一段时间的测试以后发现板子过三四天左右就没有数据上传服务器了&#xff0c;…