UE5 蓝图学习计划 - Day 12:存储与加载

在游戏开发中,存储(Save)与加载(Load) 系统至关重要,玩家需要能够保存游戏进度、角色状态、道具数据等信息,并在下次启动游戏时恢复它们。UE5 提供了 SaveGame 蓝图类,帮助开发者快速实现数据持久化。本篇文章将学习 存储系统的工作原理,并通过蓝图实现 角色状态(血量、分数)存储 与 数据读取,确保游戏进度不会丢失。

理论学习

  1. 什么是 SaveGame ?
    UE5 提供了 SaveGame 蓝图类 来管理数据存储:
    • 创建 SaveGame 对象,存储玩家的游戏数据。
    • 将数据保存到本地文件(自动存储到 Saved/SaveGames 文件夹)。
    • 加载存档,在游戏启动时恢复存储的数据。
  2. SaveGame 适合存储哪些数据?
    • 玩家状态(血量、得分、等级)。
    • 道具库存(背包内的道具)。
    • 关卡进度(已解锁的关卡、任务状态)。
    • 角色位置(重新进入游戏时恢复角色站立位置)。

实践任务:存储角色血量与分数

目标

  1. 存储角色数据
    • 角色的 血量(Health) 和 得分(Score) 可以被保存。
  2. 读取存档
    • 角色在游戏启动时,自动加载上次存档的血量和分数。

步骤 1:创建 SaveGame 蓝图

  1. 新建 SaveGame 类

    1. 在 Content Browser,右键 Blueprint Class。
    2. 在搜索框输入 SaveGame,选择 SaveGame 类。
    3. 命名为 BP_PlayerSave,然后双击打开。
      在这里插入图片描述
  2. 添加存储变量
    在 BP_PlayerSave 里,创建以下变量:

    • SavedHealth(Float):存储角色血量。
    • SavedScore(Integer):存储角色分数。
      在这里插入图片描述

步骤 2:创建存档逻辑

  1. 在角色蓝图 BP_PlayerCharacter 中添加存储功能
    1. 创建 SaveGame 实例

      • 在角色蓝图(BP_PlayerCharacter)的 Event Begin Play 事件中:
        在这里插入图片描述

      • 如果存档存在:

        • 调用 LoadGameFromSlot 并读取数据。
      • 如果存档不存在:

        • 创建新的 SaveGame 实例,并存储默认数据。
      • 将存档数据存放到变量中
        在这里插入图片描述

    2. 存档数据

      • 在角色受伤或获得分数时(用键盘按钮事件模拟),自动存储数据:
      • 这样,角色的血量和分数将在变化时被记录。
        在这里插入图片描述

步骤 3:创建加载逻辑

  1. 读取存档数据
    1. 在游戏启动时,从 SaveGame 文件加载数据:
    2. 设置角色数据
      • 读取 SavedHealth 和 SavedScore 并赋值给角色:
    3. 确保 UI 也同步更新
      • 如果游戏有 血量条和得分 UI,需要调用 UI 更新函数,让 UI 反映最新的数据。
        在这里插入图片描述

步骤 4:测试存储系统

  1. 启动游戏,按X键让角色受伤,观察血量减少,按P键获得分数,观察分数增加。
  2. 然后退出游戏。
  3. 重新启动游戏,观察角色血量和分数是否恢复到推出之前的状态。
    在这里插入图片描述

学习收获

通过今天的学习,你掌握了:

  1. 如何使用 SaveGame 蓝图类存储玩家数据。
  2. 如何读取 SaveGame 存档,在游戏启动时恢复角色状态。

下一步学习计划

接下来,我们将进入 综合项目实战阶段,整合所有已学知识,开发一个完整的 小型游戏项目!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13653.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web-文件上传-CTFHub

前言 在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。 作者更新了CTFHub系列,希望小伙伴们多多支持…

OpenAI 实战进阶教程 - 第四节: 结合 Web 服务:构建 Flask API 网关

目标 学习将 OpenAI 接入 Web 应用,构建交互式 API 网关理解 Flask 框架的基本用法实现 GPT 模型的 API 集成并返回结果 内容与实操 一、环境准备 安装必要依赖: 打开终端或命令行,执行以下命令安装 Flask 和 OpenAI SDK: pip i…

【Elasticsearch】nested聚合

在 Elasticsearch 中,嵌套聚合(nestedaggregation)的语法形式用于对嵌套字段(nestedfields)进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型,用于存储数组中的对象,这些对象需要独…

基于Qt的Ribbon界面框架

推荐一套基于Qt的Ribbon风格的界面框架,SARibbon。 Ribbon风格较传统的软件风格(菜单栏,工具栏)相比,具有直观性,高校性等优点,可以快速的找到所需工具,减少使用次数。微软的office…

【deepseek实战】绿色好用,不断网

前言 最佳deepseek火热网络,我也开发一款windows的电脑端,接入了deepseek,基本是复刻了网页端,还加入一些特色功能。 助力国内AI,发出自己的热量 说一下开发过程和内容的使用吧。 目录 一、介绍 二、具体工作 1.1、引…

C语言:函数栈帧的创建和销毁

目录 1.什么是函数栈帧2.理解函数栈帧能解决什么问题3.函数栈帧的创建和销毁的过程解析3.1 什么是栈3.2 认识相关寄存器和汇编指令3.3 解析函数栈帧的创建和销毁过程3.3.1 准备环境3.3.2 函数的调用堆栈3.3.3 转到反汇编3.3.4 函数栈帧的创建和销毁 1.什么是函数栈帧 在写C语言…

基于RTOS的STM32游戏机

1.游戏机的主要功能 所有游戏都来着B站JL单片机博主开源 这款游戏机具备存档与继续游戏功能,允许玩家在任何时候退出当前游戏并保存进度,以便日后随时并继续之前的冒险。不仅如此,游戏机还支持多任务处理,玩家可以在退出当前游戏…

ONLYOFFICE 文档 8.3 已发布:PDF 图章、合并形状、更多格式支持等

ONLYOFFICE 最新版本的在线编辑器已发布,包含约 30 项新功能和多个错误修复。阅读本文,了解所有更新内容。 关于 ONLYOFFICE 文档 ONLYOFFICE 是一个开源项目,专注于高级和安全的文档处理。坐拥全球超过 1500 万用户,ONLYOFFICE …

第二次连接k8s平台注意事项

第二次重新打开集群平台 1.三台机子要在VMware打开 2.MobaBXterm连接Session 3.三个机子docker重启 systemctl restart docker4.主节点进行平台链接 docker pull kubeoperator/kubepi-server[rootnode1 home]# docker pull kubeoperator/kubepi-server [rootnode1 home]# # 运…

通过多层混合MTL结构提升股票市场预测的准确性,R²最高为0.98

“Boosting the Accuracy of Stock Market Prediction via Multi-Layer Hybrid MTL Structure” 论文地址:https://arxiv.org/pdf/2501.09760 ​​​​​​​ 摘要 本研究引入了一种创新的多层次混合多任务学习架构,致力于提升股市预测的效能。此架构融…

结合深度学习、自然语言处理(NLP)与多准则决策的三阶段技术框架,旨在实现从消费者情感分析到个性化决策

针对电商个性化推荐场景的集成机器学习和稳健优化三阶段方案。 第一阶段:在线评论数据处理,利用深度学习和自然语言处理技术进行特征挖掘,进而进行消费者情感分析,得到消费者偏好 在第一阶段,我们主要关注如何通过深度学习和自然语…

【React】受控组件和非受控组件

目录 受控组件非受控组件基于ref获取DOM元素1、在标签中使用2、在组件中使用 受控组件 表单元素的状态(值)由 React 组件的 state 完全控制。组件的 state 保存了表单元素的值,并且每次用户输入时,React 通过事件处理程序来更新 …

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别? (1)变量 定义不仅告知编译器变量的类型和名字,还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型,但并不为它分配内存空间…

【Android】jni开发之导入opencv和libyuv来进行图像处理

做视频图像处理时需要对其进行水印的添加,放在应用层调用工具性能方面不太满意,于是当下采用opencvlibyuv方法进行处理。 对于Android的jni开发不是很懂,我的需求是导入opencv方便在cpp中调用,但目前找到的教程都是把opencv作为模…

HTML应用指南:利用GET请求获取全国盒马门店位置信息

随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应…

20240206 adb 连不上手机解决办法

Step 1: lsusb 确认电脑 usb 端口能识别设备 lsusb不知道设备有没有连上,就插拔一下,对比观察多了/少了哪个设备。 Step 2: 重启 adb server sudo adb kill-serversudo adb start-serveradb devices基本上就可以了~ Reference https://b…

【BUUCTF逆向题】[MRCTF2020]Transform

一.[MRCTF2020]Transform 64位无壳,IDA打开发现main函数进入反编译 阅读程序 先输入33位code再加密处理然后验证是否相等的题型 逆向看,验证数组byte_40F0E0已知 再往上看加密处理方式 就是将Str(我们输入的flag)的每一个索引处…

寒假2.5

题解 web:[网鼎杯 2020 朱雀组]phpweb 打开网址,一直在刷新,并有一段警告 翻译一下 查看源码 每隔五秒钟将会提交一次form1,index.php用post方式提交了两个参数func和p,func的值为date,p的值为Y-m-d h:i:s a 执行fu…

【正点原子K210连载】第六十七章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第六十七章 音频FFT实验 本章将介绍CanMV下FFT的应用,通过将时域采集到的音频数据通过FFT为频域。通过本章的学习,读者将学习到CanMV下控制FFT加速器进行FFT的使用。 本章分为如下几个小节: 32.1 maix.FFT模块介绍 32.2 硬件设计 32.3 程序设…

【Prometheus】如何通过golang生成prometheus格式数据

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…