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

ops/2025/2/7 14:03:52/

在游戏开发中,存储(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.ppmy.cn/ops/156450.html

相关文章

蓝桥杯试题:排序

一、题目大意 输入一个数字n&#xff08;n<1e5&#xff09;&#xff0c;然后输入一个长度为n的数组 an&#xff08;-1e9<ai<1e9&#xff09; 请你输出出现频率最大的数&#xff0c;如果有多个数频率最大&#xff0c;按从小到大依次输出。 示例1&#xff1a; 输入5 …

局域网文件互传:手机与电脑的便捷传输利器

这是一款可在局域网内实现手机与电脑之间文件互传的软件&#xff0c;由吾爱作者y4h3z4精心开发。它是一款绿色单文件版软件&#xff0c;体积小巧&#xff0c;仅780K&#xff0c;无需安装&#xff0c;双击即可直接使用。 左上角“电脑根目录”可以选择需要传输到手机的文件夹。当…

项目实操:windows批处理拉取git库和处理目录、文件

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

Web3.0 技术应用溯源系统建设

Web3.0 技术与溯源&#xff08;Track and Trace&#xff09;的结合&#xff0c;是区块链等去中心化技术在实际应用中的典型场景之一。通过 Web3.0 的底层技术&#xff0c;可以构建透明、不可篡改且可验证的溯源系统&#xff0c;解决传统供应链、商品流通等领域的数据信任问题。…

算法日记13:SC41树状数组(区间修改)

一、题目&#xff1a; 二、题解&#xff1a; 在单点修改中&#xff0c;我们用t[i]来维护原数组2.1:在区间修改中&#xff0c;我们将维护原数组的差分数组 接下来&#xff0c;让我们来回顾一些差分的性质 此时&#xff0c;假设我们需要求 a 1 a 2 a 3 a 4 a1a2a3a4 a1a2a3a…

7.4状压DP

在C中&#xff0c;状态压缩动态规划&#xff08;State Compression DP&#xff0c;简称状压DP&#xff09; 是一种通过 二进制位运算 高效表示离散状态集合的动态规划方法&#xff0c;特别适用于解决 组合优化 和 排列选择 类问题。其核心思想是将多维状态压缩为整数&#xff0…

项目练习:SpringSecurity+OAuth2接入gitee的第三方登陆(授权码模式)

文章目录 一、知识准备1、OAuth2的角色2、使用场景3、四种授权模式 二、案例实现1、gitee上注册应用2、直接通过手动发送http请求方式3、项目代码方式4、测试方法 一、知识准备 1、OAuth2的角色 1、资源所有者(Resource 0wner):即用户&#xff0c;资源的拥有人&#xff0c;想要…

Spring Boot Actuator与JMX集成实战

在微服务架构中&#xff0c;监控和管理应用的运行状态是至关重要的。Spring Boot Actuator 提供了一种便捷的方式来监控和管理 Spring Boot 应用&#xff0c;而 JMX&#xff08;Java Management Extensions&#xff09;则是一种用于管理 Java 应用的标准技术。本文将通过一个实…