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

【UE5 C++课程系列笔记】13——GameInstanceSubsystem的简单使用

目录

概念

基本使用案例

效果

步骤


概念

  UGameInstanceSubsystem 类继承自 USubsystem,它与 GameInstance 紧密关联,旨在为游戏提供一种模块化、可方便扩展和管理的功能单元机制。在整个游戏运行期间,一个 GameInstance 可以包含多个 UGameInstanceSubsystem 实例,每个实例负责处理特定方面的逻辑,并且可以在不同的游戏场景、关卡之间持久化地存在(只要 GameInstance 本身没被销毁),便于实现跨场景共享数据和功能的需求。

基本使用案例

        通过一个小案例来证明UGameInstanceSubsystem 实例可以在不同关卡中持久的存在,同时介绍UGameInstanceSubsystem 的简单使用。

效果

        实现效果如下图所示,通过UGameInstanceSubsystem 类来跨关卡共享全局变量。可以看到在第1个关卡中数值从100加到130,当切换到第2个关卡后,继续在140的基础上加到160。

步骤

1. 新建一个普通的C++类和一个Actor类,这里分别命名为“SimpleSubsystem”和“WorkActor”

2.  在“SimpleSubsystem.h”中添加如下代码。主要定义一个名为 USimpleSubsystem 的类,它继承自 UGameInstanceSubsystem,在该类中定义了一个名为“CurrentHealth”的变量和两个函数AddHealth、GetHealth。然后重写了父类的ShouldCreateSubsystem、Initialize、Deinitialize的方法。

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "Subsystems/GameInstanceSubsystem.h"#include "SimpleSubsystem.generated.h"UCLASS()
class STUDY_API USimpleSubsystem : public UGameInstanceSubsystem
{GENERATED_BODY()public:virtual bool ShouldCreateSubsystem(UObject* Outer) const override;virtual void Initialize(FSubsystemCollectionBase& Collection) override;  //在子系统初始化阶段会被调用的重要函数,用于进行各种初始化操作virtual void Deinitialize() override;  //在GameInstance销毁或者子系统要被卸载时被调用public:UFUNCTION(BlueprintCallable)void AddHealth(int32 InHealthToAdd);UFUNCTION(BlueprintCallable)int32 GetHealth();private:int32 CurrentHealth = 100;
};

3. 在在“SimpleSubsystem.cpp”中主要实现了函数AddHealth、GetHealth

4. 在UEEditor中创建派生自“WorkActor”的蓝图类“BP_WorkActor”

打开“BP_WorkActor”,在事件图表中通过调用“SimpleSubsystem”的函数AddHealth,使得“SimpleSubsystem”的变量CurrentHealth的值增加

5. 新建两个关卡如下

 在关卡“Map_Test”的关卡蓝图中每帧调用“SimpleSubsystem”的函数GetHealth,来打印输出变量CurrentHealth的值。通过1键切换关卡到“Map_Test1”

在关卡“Map_Test1”的关卡蓝图中同样每帧调用“SimpleSubsystem”的函数GetHealth

6. 为了区分两个关卡,分别在关卡“Map_Test”和“Map_Test1”中加入方块和球体

 然后向两个关卡中都加入“BP_WorkActor”。

最终运行效果如文章开头所示。证明了UGameInstanceSubsystem 实例可以在不同关卡中持久的存在。

相关文章:

【UE5 C++课程系列笔记】13——GameInstanceSubsystem的简单使用

目录 概念 基本使用案例 效果 步骤 概念 UGameInstanceSubsystem 类继承自 USubsystem,它与 GameInstance 紧密关联,旨在为游戏提供一种模块化、可方便扩展和管理的功能单元机制。在整个游戏运行期间,一个 GameInstance 可以包含多个 UGa…...

实用工具推荐----Doxygen使用方法

目录 目录 1 软件介绍 2 Doxygen软件下载方法 3 Doxygen软件配置方法 4 标准注释描述 4.1 块注释 和 特殊描述字符 4.1.1 函数描述示例 4.1.2结构体数组变量示例 特别注意: 4.2单行注释 4.2.1 单个变量注释示例 特别注意: 4.2.2对于枚举变量…...

js垃圾回收机制详细讲解

JavaScript 垃圾回收机制(Garbage Collection, GC)负责自动管理内存的分配和释放,确保程序在运行时不会因为内存泄漏而崩溃。它的主要任务是回收不再使用的内存空间,防止内存泄漏。JavaScript 的垃圾回收通常由引擎自动完成&#…...

【Linux/踩坑】Linux中启动eclipse或HDFS因JAVA_HOME设置报错

Linux中启动eclipse或hadoop因JAVA_HOME设置报错 eclipseHadoop eclipse 错误提示: A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the follo…...

百度千帆平台构建AI APP的基础概念梳理

百度千帆平台构建AI APP的基础概念梳理 如果想制作大语言模型(LLM)相关的APP, 将利用百度的千帆平台在国内可能是最便捷的途径,因为百度开发了成熟的工作流,前些年还有些不稳定,现在固定下来了&#xff0c…...

Unity3D Huatuo技术原理剖析详解

前言 在游戏开发领域,Unity3D凭借其强大的跨平台能力和丰富的功能,成为了众多开发者的首选工具。而在Unity3D的生态系统中,Huatuo作为一款重要的插件,为游戏开发带来了极大的便利。本文将深入剖析Huatuo的技术原理,并…...

记Fastjson2的一个报ConcurrentModificationException的bug

错误背景:fastjson2的parseObject方法,在spring webflux项目中被调用,有时会报java.util.ConcurrentModificationException错误。报错处的代码如下图: 改了半天与并发安全相关的代码,还是会报此错误。后来改变思路搜…...

使用TimesFM 对车辆销售进行预测

代码功能概述 导入相关包与设置环境变量: 首先导入了如 os、numpy、pandas 等常用的 Python 库,同时设置了一些与特定库(如 XLA_PYTHON_CLIENT_PREALLOCATE 和 JAX_PM AP_USE_TENSORSTORE)相关的环境变量,用于优化计算…...

OpenEuler 22.03 不依赖zookeeper安装 kafka 3.3.2集群

零:规划 本次计划安装三台OpenEuler 22.03 版本操作系统的服务器,用于搭建 kafka和flink 集群。因为从kafka 2.8 版本以后开始不依赖 zookeeper ,同时考虑到需要找一个发布时间早于 flink 1.17 的kafka 版本且应尽量稳定,综合考虑…...

ubuntu 将python3.8 升级为python3.10并进行版本切换

ubuntu 将python3.8 升级为python3.10并进行版本切换 前言将python3.8 升级为3.10安装pippython版本切换 前言 有一个功能包编译环境需要为python3.10 ,但是当前环境为python3.8 ,所以需要进行版本升级,编译完还需要把环境切换回来。 将pyt…...

3. Kafka入门—安装与基本命令

Kafka基础操作 一. 章节简介二. kafka简介三. Kafka安装1. 准备工作2. Zookeeper安装2.1 配置文件2.2 启动相关命令3. Kafka安装3.1 配置文件3.2 启动相关命令-------------------------------------------------------------------------------------------------------------…...

如何使用 python创建图片格式转换器

在本篇博客中,我们将通过一个简单的实例来展示如何使用 wxPython 创建一个图形用户界面(GUI)应用程序,用于将图片从一种格式转换为另一种格式。我们将通过以下几个步骤实现这一目标: C:\pythoncode\new\imageconvertty…...

命令行之巅:Linux Shell编程的至高艺术(上)

文章一览 前言一、shell概述1.1 shell的特点和类型1.1.1 **shell的特点:**1.1.2 常用shell类型 1.2 shell脚本的建立和执行1.2.1 建立shell脚本1.2.2 执行shell脚本的方式1.2.3 shell程序实例 二、shell变量与算数运算2.1 简单shell变量2.1.1 简单变量定义和赋值2.1…...

【gulp】gulp 的基本使用

gulp 是一个基于node的自动化打包构建工具,前端开发者可以使用它来处理常见任务: 创建项目 进入项目 npm init -ynpm i gulp -g (使用命令 gulp)npm i gulp -D # 开发依赖(前端工具都是开发依赖 本地安装 代…...

Linux 下处理 ^M 字符的最佳实践

Linux 下处理 ^M 字符的最佳实践 一、快速解决方案 按照优先级排序的三种解决方案: 1. 使用 dos2unix(推荐) # 安装 sudo apt-get install dos2unix # Ubuntu/Debian sudo yum install dos2unix # CentOS# 使用 dos2unix 文件名2. 使用 sed sed...

【优选算法】—复写零(双指针算法)

云边有个稻草人-CSDN博客 每天至少一道算法题,接着干,以额现在的实力想完成那个目标确实难。算法题确实烧脑,挺煎熬的,但脑子烧多了是不是就该好些了?。。。 记得那句话,必须有为成功付出代价的决心&#x…...

2024国赛A问题三和四

问题三 最小螺距单目标优化模型的建立 问题二考虑了在螺距固定的条件下计算舞龙队盘入的终止时间,问题三在第二问的基础提出了改变螺距的要求,即求解在螺距最小为多少时,龙头前把手能够沿着相应的螺线盘入到调头空间的边界。故可将其转换为…...

asp.net 高校学生勤工俭学系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…...

《计算机组成及汇编语言原理》阅读笔记:p116-p120

《计算机组成及汇编语言原理》学习第 7 天,p116-p120 总结,总计 5 页。 一、技术总结 1.CPU优化 (1)increase overall performance number 例如:16位电脑提升到32位电脑。 (2)multiprocessing One way to make computers more useful i…...

C# OpenCvSharp DNN 卡证检测矫正

目录 说明 效果 模型 项目 代码 下载 参考 说明 源码地址:https://modelscope.cn/models/iic/cv_resnet_carddetection_scrfd34gkps 在实人认证、文档电子化等场景中需要自动化提取卡证的信息,以便进一步做录入处理。这类场景通常存在两类问题&…...

基于vue3与pinia构建电商核心模块,快马平台实战演练购物车与商品列表

基于vue3与pinia构建电商核心模块,快马平台实战演练购物车与商品列表 最近在做一个电商项目,需要快速搭建商品展示和购物车功能。经过一番调研,我选择了Vue3 Pinia的组合,配合Vue Router实现页面跳转。整个过程在InsCode(快马)平…...

15 从 MLP 到 LeNet:PyTorch 网络代码为什么总像模板?

PyTorch 网络代码为什么总像模板? 很多人第一次看 PyTorch 网络代码时,都会有一种很熟悉的感觉: 代码不长每一行单独看也认识但合在一起,就完全不知道这个网络到底是怎么搭出来的 尤其是下面这几个东西,最容易让人越看…...

OpCore-Simplify:让黑苹果配置从3天缩短到15分钟的智能助手

OpCore-Simplify:让黑苹果配置从3天缩短到15分钟的智能助手 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾因为复杂的黑苹果配置…...

从一线装维经验看,扩展式智能插座更适合多路监测与项目落地

作为一名做了12年现场电气安装与运维的一线装维人员,今天想聊聊智能插座。这些年接触过的智能插座不少,市面上的产品确实五花八门,外观、功能、结构都不一样。选择多了,对用户来说未必是好事,反而更容易挑花眼。尤其一…...

二、PXE+Kickstart 无人值守批量部署操作系统;使用物理路由器的dhcp:ProxyDHCP+TFTP+HTTP+Kickstart应答文件(VMware测试环境)

前文不使用物理设备的 DHCP ,选择自行安装 DHCP 服务进行的PXEKickstart 无人值守部署操作系统的方法难以适用于家庭或企业环境,本文尝试一种使用物理设备(家庭路由器、企业交换机)的DHCP功能批量部署物理机操作系统的方案。 建议…...

Air8101 搭载 RGB 直驱与 AirUI 适配工业电容屏开发

Air8101专为工业电容屏优化设计,RGB接口可直驱各类尺寸LCD电容屏,最高可支持1024*720分辨率屏,无需额外转接,大幅降低硬件开发成本。 一、硬件直驱: 目前正在支持完善:480*272分辨率:4.3寸屏800…...

快速验证抓取逻辑:在快马平台用AI十分钟搭建龙虾openclaw演示原型

最近在研究机器人抓取控制相关的技术,偶然发现了龙虾openclaw这个开源库,想快速验证下它的抓取逻辑。传统开发流程需要先搭建环境、写大量样板代码,但借助InsCode(快马)平台,整个过程变得异常简单。下面分享我的十分钟原型搭建经验…...

UVM field automation机制详解:从宏定义到标志位设置的完整指南

UVM Field Automation机制深度解析:从宏定义到标志位实战指南 在芯片验证领域,UVM(Universal Verification Methodology)已经成为事实上的行业标准。而field automation机制作为UVM中最基础却又最容易被低估的功能之一&#xff0c…...

OpenCore配置效率工具:从入门到精通的黑苹果EFI管理方案

OpenCore配置效率工具:从入门到精通的黑苹果EFI管理方案 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 在黑苹果配置领…...

seo网络优化如何提高网站的转化率

SEO网络优化如何提高网站的转化率 在当前的互联网时代,网站的流量和转化率是衡量企业在网络上竞争力的重要指标。而搜索引擎优化(SEO)网络优化作为提高网站流量和转化率的有效手段,其重要性不言而喻。SEO网络优化究竟能如何有效提…...