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

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

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.kler.cn/a/399027.html

相关文章:

  • PySpark——Python与大数据
  • vue2+3 —— Day5/6
  • 探索美赛:从准备到挑战的详细指南
  • 开源科学工程技术软件介绍 – EDA工具KLayout
  • 计算机组成原理笔记----基础篇
  • 录的视频怎么消除杂音?从录制到后期的杂音消除攻略
  • Conda环境与Ubuntu环境移植详解
  • 【机器学习】机器学习中用到的高等数学知识-4.数值分析 (Numerical Analysis)
  • 怎么用Python+selenium自动化生成测试报告
  • Brave127编译指南 Windows篇:配置Git(四)
  • UE5运行时创建slate窗口
  • iOS UI自动化 Appium的元素定位方式及比较
  • matlab-fmincon函数做优化、optimoptions用法
  • 千图网 AI 绘画平台——智能图像创作工具
  • Ubuntu杀死指定进程
  • Linux:进程的优先级 进程切换
  • python 2小时学会八股文-数据结构
  • Spring MVC初探
  • 基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)
  • npm install执行一直在转圈
  • 如何使用正则表达式验证域名
  • 校园交友系统的设计与实现(开源版+三端交付+搭建+售后)
  • 选择租用网站服务器的适用范围是什么?
  • 【python】Bokeh 与 Plotly:创建交互式数据可视化工具
  • Xcode控制台“po“错误:表达式解析失败
  • 笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像