21.UE5游戏存档,读档,函数库

news/2024/11/22 16:23:28/

2-23 游戏存档、读档、函数库_哔哩哔哩_bilibili

目录

1.存档蓝图

2.函数库

2.1保存存档

 2.2读取存档:

3.加载游戏,保存游戏

3.1游戏实例对象

3.2 加载游戏

 3.3保存游戏


这一节的内容较为错综复杂,中间没有运行程序进行阶段性成果的验证,只有全部敲完,才能够实现对应功能,所以最好一口气看到最后。

1.存档蓝图

既然我们想要保存存档,当然不能一股脑的将数据全保存,需要规定存档保存的内容有哪些。

存档蓝图,就是将我们想要保存的数据,全部记录到这个蓝图中,先在内存中进行保存,随后在写入到硬盘中,进行持久化保存。

首先创建存档蓝图

双击打开我的存档,在存档蓝图中保存两个内容,分别时等级(int)当前经验值(float)

这个时候我们想要保存的存档格式就已经规定好了,下一步是实现读取保存存档的方法,这个方法需要我们全局都能够调用,所以这里我们引入函数库的概念。 

2.函数库

函数库中的函数可以理解为全局函数,在项目的任何位置都可以调用的函数。

在我们的函数库中,目前主要实现两个函数分别是:读取存档,保存存档

首先创建函数库蓝图

2.1保存存档

在函数库中新建一个函数

保存存档函数的输入选择我们的存档蓝图类型,然后调用函数:将游戏保存到插槽,可以将我们存档蓝图中的内容持久化到硬盘中。

持久化的文件,以下面的形式存储在本地文件中。

 这个时候我们就成功保存我们存档蓝图(我的蓝图)中的内容到硬盘上了,下一步是如何从文件mysave.sav中读取存档到我们的存档蓝图中。

 2.2读取存档:

创建读取存档的函数,首先判断游戏存档存在(Slot Name即我们的存档名:mysave.sav),如果能找到我们的存档,就直接从插槽中加载游戏,加载的内容会返回一个存档蓝图类型的对象,将其转换为我的存档,并进行输出,这样这个方法就会返回一个我们想要的存档蓝图对象了。

当然返回节点除了我们的存档蓝图对象,还有一个是否成功读档的判断标志,用来对程序进行控制。

接下来我们要从存档蓝图中加载游戏的,以及保存游戏

3.加载游戏,保存游戏

3.1游戏实例对象

创建游戏实例,用来控制游戏是否采用加载存档的方式进入。

游戏实例蓝图中只添加一个布尔类型的变量,用来控制是否采用读取存档的方式进入游戏

3.2 加载游戏

打开我们的开始菜单UI组件蓝图,并打开图表

开始游戏按钮:获取我们的游戏实例对象,是否读取存档==False 进入游戏

加载游戏按钮:获取我们的游戏实例对象,是否读取存档==True。然后调用函数库中的读取存档函数,如果读取存档成功,则直接进入开始关卡,否则不操作。(读取存档函数失败会自动打印:找不到存档,见上文2.2)

 打开我们的主角蓝图,并在事件开始的时候准备恢复存档数据。

因为一般情况下一个角色对应一个存档蓝图(存档蓝图和硬盘里的存档文件,概念不一样,存档蓝图只有一个,但是存档文件可以有多个),所以我们直接在主角下声明一个变量,为我的存档蓝图对象。

如果点击开始游戏游戏实例中的是否读取存档为false,这样就需要为我们的角色新建一个存档蓝图对象,保存我们的角色信息。

如果点击加载游戏游戏实例中的是否读取存档为true,这样我们就需要使用到函数库中的读取存档函数,从存档文件(mysave.sav)中加载我们存档蓝图对象。

 将文件中读取到的存档蓝图对象,拉出来,获取其中的等级和当前经验,并为我们的主角对象赋值,随后将读取到的蓝图存档绑定到主角的我的存档

 3.3保存游戏

我们希望实现:当角色死亡时,将等级,经验保存到存档蓝图(我的存档)中,并进一步持久化到存档文件(mysave.sav)中,随后将游戏跳转到开始界面。

打开主角的任意伤害事件。

 实现逻辑如下:

 至此实现死亡后保存等级和经验的功能。

 4.主要知识点

4.1函数库的使用

4.2主角属性<——>存档蓝图对象<——>插槽(Slot Name)mysave.sav之间的转换,插槽到存档蓝图到主角属性,对应着游戏加载(从硬盘到内存),主角属性到存档蓝图到插槽,对应着保存游戏(从内存到硬盘)


http://www.ppmy.cn/news/1548717.html

相关文章

深入理解C++11右值引用与移动语义:高效编程的基石

文章目录 前言&#x1f4da;一、C11的历史发展&#x1f4d6;1.1 C11 之前的背景&#x1f4d6;1.2 C11 的发展历程&#x1f4d6;1.3 C11 的主要设计目标&#x1f4d6;1.4 C11 的主要特性&#x1f4d6;1.5 C11 的影响 &#x1f4da;二、统一的列表初始化&#x1f4d6;2.1 基本列表…

【Python项目】基于Python的医疗知识图谱问答系统

【Python项目】基于Python的医疗知识图谱问答系统 技术简介&#xff1a;采用Python语言、MVC架构、Flask、Neo4j技术等实现。 系统简介&#xff1a;本系统的主要模块如下&#xff1a; &#xff08;1&#xff09;前端界面模块&#xff1a;负责用户界面的设计和展示&#xff0c;包…

使用docker compose安装部署gitlab

安装gitlab docker pull gitlab/gitlab-ce:latest下载并安装 Docker Compose V2&#xff1a; sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod…

Linux 中grep命令

一、grep是对数据进行过滤查早关键字 源数据可以是 文件内容 grep hello /opt/hello.txt&#xff0c;找出存在hello的那一行. 命令的执行结果 &#xff0c;这个需要结合管道符使用&#xff0c;cat /etc/passwd | grep root 测试样本文件 I teach linux.I like python.My qq…

CentOS 8 安装 chronyd 服务

操作场景 目前原生 CentOS 8 不支持安装 ntp 服务&#xff0c;因此会发生时间不准的问题&#xff0c;需使用 chronyd 来调整时间服务。CentOS 8以及 TencentOS 3.1及以上版本的实例都使用 chronyd 服务实现时钟同步。本文介绍了如何在 CentOS 8 操作系统的腾讯云服务器上安装并…

AI大模型开发架构设计(14)——基于LangChain大模型的案例架构实战

文章目录 基于LangChain大模型的案例架构实战1 LangChain 顶层架构设计以及关键技术剖析LangChain 是什么?LangChain的主要功能是什么&#xff1f;LangChain 顶层架构设计LangChain 典型使用场景&#xff1a;QA 问答系统LangChain 顶层架构设计之 Model I/OLangChain 顶层架构…

vue中el-select 模糊查询下拉两种方式

第一种&#xff1a;先获取所有下拉数据再模糊查询&#xff0c;效果如下 1&#xff0c;页面代码&#xff1a;speciesList是种类列表List, speciesId 是speciesList里面对应的id&#xff0c;filterable是过滤查询标签 <el-form-item label"种类" prop"species…

C#编写的日志记录组件 - 开源研究系列文章

以前编写过一个日志记录组件的博文&#xff0c;这次发布一个修改过的完善版本。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 实现&#xff1b; 2) 使用&#xff1b; 后面的参数为级别设置&#xff0c;只有大于这个级别的才进行日志记录&#xff0c;限制了日志记录的…