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

devtools/2024/12/28 17:12:30/

效果

 通过在关卡蓝图中触发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/devtools/145767.html

相关文章

ruoyi 请求参数类型不匹配,参数[giftId]要求类型为:‘java.lang.Long‘,但输入值为:‘orderGiftUnionList

记录下自己的bug /*** 礼物订单信息** author ruoyi*/ RestController RequestMapping("/order/gift") public class OrderGiftController extends BaseController {Autowiredprivate IOrderGiftService orderGiftService;/*** 获取礼物订单列表 - 联合数据*/GetMap…

实战演练JDK的模块化机制

实战演练JDK的模块化机制--楼兰 带你聊最纯粹的Java ​ 你发任你发,我用Java8。你用的JDK到什么版本了?很多开源框架都已经开始陆续升级JDK版本了。你对于JDK8往后陆陆续续更新的这些版本有什么感觉吗? ​ 很多人会说其实并没有太多的感觉。JDK的新版本不断推出一些不痛不痒…

D类音频应用EMI管理

1、前言 对于EMI,首先需要理解天线。频率和波长之间的关系,如下图所示。   作为有效天线所需的最短长度是λ/4。在空气中,介电常数是1,但是在FR4或玻璃环氧PCB的情况下,介电常数大约4.8。这种效应会导致信号在FR4材…

Vue BPMN Modeler流程图

1、参考地址 git clone https://github.com/evanyangg/vue-bpmn-modeler.git 2、安装bpmn.js npm install bpmn-js --save 3、使用bpmn.js <template><div class"containers"><div class"canvas" ref"canvas"></div&g…

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统&#xff0c; Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 体验地址&#xff1a;http://blog.gaoredu.com/ 今天&#xff0c;我们自豪地宣布ReactPress 1.6.0版本的正式发布&#xff0c;…

亚远景-ISO 21434标准下的汽车网络安全测试:全面要求与实施策略

ISO 21434标准在安全测试方面有着详细且全面的要求&#xff0c;以确保车辆网络系统的安全性能得到有效验证和确认。以下是该标准在安全测试方面的主要要求&#xff1a; 一、安全测试计划的制定与执行 要求&#xff1a;制造商需要制定并执行详细的安全测试计划&#xff0c;该计…

JVM实战—2.JVM内存设置与对象分配流转

大纲 1.JVM内存划分的原理细节 2.对象在JVM内存中如何分配如何流转 3.部署线上系统时如何设置JVM内存大小 4.如何设置JVM堆内存大小 5.如何设置JVM栈内存与永久代大小 6.问题汇总 1.JVM内存划分的原理细节 (1)背景引入 (2)大部分对象的存活周期都是极短的 (3)少数对象…

37.1 prometheus管理接口源码讲解

本节重点介绍 : 生命周期控制相关 reload 热更新配置 pprof相关 prometheus pprof 查看火焰图 存储操作相关 生命周期控制相关 代码位置位置 D:\go_path\src\github.com\prometheus\prometheus\web\web.go if o.EnableLifecycle {router.Post("/-/quit", h.quit)r…