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之间的转换,插槽到存档蓝图到主角属性,对应着游戏加载(从硬盘到内存),主角属性到存档蓝图到插槽,对应着保存游戏(从内存到硬盘)
相关文章:
21.UE5游戏存档,读档,函数库
2-23 游戏存档、读档、函数库_哔哩哔哩_bilibili 目录 1.存档蓝图 2.函数库 2.1保存存档 2.2读取存档: 3.加载游戏,保存游戏 3.1游戏实例对象 3.2 加载游戏 3.3保存游戏 这一节的内容较为错综复杂,中间没有运行程序进行阶段性成果的验…...
「Mac玩转仓颉内测版14」PTA刷题篇5 - L1-005 考试座位号
本篇将继续讲解PTA平台上的题目 L1-005 考试座位号,通过考生准考证号与座位号的对应关系,掌握简单的数据查询与映射操作,进一步提升Cangjie编程语言的实际应用能力。 关键词 PTA刷题数据查询映射操作输入输出Cangjie语言 一、L1-005 考试座位…...
Vue3引用高德地图,进行位置标记获取标记信息
首先安装地图插件 cnpm i amap/amap-jsapi-loader --save封装地图子组件 <template><el-dialogtitle"选择地点"width"740px"class"select-map-dialog"v-model"dialogShow":close-on-click-modal"false":modal-or…...
《C++设计模式:重塑游戏角色系统类结构的秘籍》
在游戏开发领域,游戏角色系统的类结构设计至关重要。一个良好的类结构可以使游戏更易于扩展、维护和优化,而 C中的设计模式为我们提供了强大的工具来实现这一目标。 一、理解游戏角色系统的复杂性 游戏角色系统通常具有高度的复杂性。每个角色都有自己…...
深入浅出 Go 语言:现代编程的高效选择
深入浅出 Go 语言:现代编程的高效选择 引言 Go 语言(也称 Golang)是由 Google 开发的一种现代编程语言,面向高效、简单和并发。自 2009 年问世以来,它已迅速成长为许多企业和开发者首选的语言,尤其是在后端开发、云计算和微服务领域。 本文旨在从 Go 语言的设计哲学、…...
RDIFramework.NET CS敏捷开发框架 V6.1发布(.NET6+、Framework双引擎、全网唯一)
RDIFramework.NET C/S敏捷开发框架V6.1版本迎来重大更新与调整,全面重新设计业务逻辑代码,代码量减少一半以上,开发更加高效。全系统引入全新字体图标,整个界面焕然一新。底层引入最易上手的ORM框架SqlSugar,让开发更加…...
vue路由的钩子函数?
在 Vue 中,路由的钩子函数可以用来在导航过程中执行一些操作,比如进行权限验证、页面加载前后的处理等。常用的路由钩子函数包括全局前置守卫、全局解析守卫、全局后置钩子以及路由独享守卫。下面是这些路由守卫函数的简要说明: 全局前置守卫…...
【Java】枚举类映射
在数据库中常用数字来代替字符串类型,编写一个枚举映射类 当数据库的介质类型要存储数字,前端可以任意传参,通过枚举转换后端都会转成数字对应类型 import lombok.Getter;/*** <p>* 存档介质类型* </p>** author Jyang* date 2…...
精华帖分享|浅谈金融时间序列分析与股价随机游走
本文来源于量化小论坛公共讨论区板块精华帖,作者为正扬,发布于2024年6月3日。 以下为精华帖正文: 01 引 时间序列分析是个很唬人的术语,实际上它也不是一个很容易接近的话题。我本科曾经短暂地学过一点点,又看到互联…...
任意文件下载漏洞
1.漏洞简介 任意文件下载漏洞是指攻击者能够通过操控请求参数,下载服务器上未经授权的文件。 攻击者可以利用该漏洞访问敏感文件,如配置文件、日志文件等,甚至可以下载包含恶意代码的文件。 这里再导入一个基础: 你要在网站下…...
LeetCode 445.两数相加 II
题目: 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 思路:反转链表 两数相加 I 代码&…...
CentOS 7中查找已安装JDK路径的方法
使用yum安装了jdk8,但是其他中间件需要配置路径的时候,却没办法找到,如何获取jdk路径: 一、确认服务器是否存在jdk java -version 二、查找jdk的 java 命令在哪里 which java 三、找到软链指向的地址 ls -lrt /usr/bin/java l…...
springboot基于Web足球青训俱乐部管理后台系统开发(代码+数据库+LW)
摘 要 随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率…...
RHCE的学习(21)
第三章 Shell条件测试 用途 为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句,例如判断语句和循环语句中…...
Ubuntu 18.04 配置sources.list源文件(无法安全地用该源进行更新,所以默认禁用该源)
如果你 sudo apt update 时出现诸如 无法安全地用该源进行更新,所以默认禁用该源 的错误,那就换换源吧,链接: https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ 注意版本: 修改源文件: sudo nano /etc…...
19.UE5道具掉落
2-21 道具掉落,回血、回蓝、升级提升伤害_哔哩哔哩_bilibili 目录 1.道具的创建,道具功能的实现 2.随机掉落 1.道具的创建,道具功能的实现 新建Actor蓝图,并命名为道具总类,添加一个Niagara粒子组件和一个碰撞箱bo…...
MySQL —— MySQL逻辑架构与查询过程
文章目录 MySQL逻辑架构整体分为三层连接层服务层查询缓存解析器优化器执行器 存储引擎层系统文件层 MySQL 查询过程查询过程框图 博客1 博客2 MySQL逻辑架构整体分为三层 最上层为客户端层,并非MySQL所独有,诸如:连接管理、授权认证、权限校…...
ODOO学习笔记(12):自定义模块开发
一、Odoo模块结构基础 基本目录结构 Odoo自定义模块通常有一个特定的目录结构。一个典型的模块目录包含以下文件和文件夹: __init__.py:这是一个Python模块初始化文件。它使得该目录被视为一个Python模块。在这个文件中,你可以通过from. impo…...
Excel单元格中自适应填充多图
实例需求:在Excel插入图片时,由于图片尺寸各不相同,如果希望多个图片填充指定单元格,依靠用户手工调整,不仅费时费力,而且很难实现完全填充。如下图中的产品图册,有三个图片,如下图所…...
20.useMediaQuery
React useMediaQuery 钩子:如何优雅地实现响应式设计? 在现代 Web 开发中,响应式设计是一个关键概念,它允许应用根据不同的屏幕尺寸和设备特性调整其布局和行为。useMediaQuery 钩子提供了一种声明式的方法来在 React 组件中使用媒体查询,使得响应式逻辑的实现变得简单而…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...
