SaveGameFree 基础教程:从零保存玩家进度、金币与关卡数据
SaveGameFree 基础教程从零保存玩家进度、金币与关卡数据【免费下载链接】SaveGameFreeSave Game Free is a free and simple but powerful solution for saving and loading game data in unity.项目地址: https://gitcode.com/gh_mirrors/sa/SaveGameFreeSaveGameFree 是一款免费、简单却功能强大的Unity 存档插件专为 Unity 游戏引擎设计让你用几行代码就能实现玩家进度、金币、关卡等数据的保存与读取。本教程面向零基础新手带你从安装导入开始一步步学会在 Unity 中保存和加载游戏数据并掌握存档加密、多格式序列化等进阶技巧让存档从此不再是难题。SaveGameFree Unity存档插件宣传图展示跨平台、云存档与加密功能SaveGameFree 是什么为什么用它保存游戏数据在 Unity 开发中玩家关掉游戏后进度丢了是最常见也最尴尬的问题。SaveGameFree 正是为解决这个问题而生——它是一个轻量级的 Unity 存档库核心 API 只有几个静态方法却能覆盖绝大多数存档需求✅跨平台支持 Windows、macOS、Linux、Android、iOS、WebGL 等几乎所有 Unity 平台✅一键保存SaveGame.SaveT()即可写入无需手写文件 IO✅加密保护内置加密编码器防止玩家修改存档✅三种序列化格式JSON、XML、二进制任选✅自动存档组件拖拽即可保存物体位置、旋转、缩放✅异步支持大文件保存不卡主线程✅兼容 Unity 6完全免费MIT 开源协议如果你正在寻找Unity 免费存档插件SaveGameFree 是目前上手成本最低的选择之一。第一步获取并导入 SaveGameFree克隆或下载项目源码后把Assets/BayatGames/SaveGameFree整个目录复制到你的 Unity 项目Assets文件夹下即可无需额外配置依赖git clone https://gitcode.com/gh_mirrors/sa/SaveGameFree导入完成后你会在项目中看到如下核心目录结构Assets/BayatGames/SaveGameFree/Runtime/— 核心运行时代码其中 SaveGame.cs 是全部存档 API 所在Assets/BayatGames/SaveGameFree/Runtime/Types/— 内置的可序列化类型Vector3、Color、Quaternion 等Assets/BayatGames/SaveGameFree/Samples~/— 官方示例场景与脚本强烈建议先跑一遍Assets/BayatGames/SaveGameFree/Plugins/— 序列化所需的 FullSerializer 库第二步一行代码保存金币这是 SaveGameFree 最迷人的地方。保存金币只需要调用一次SaveGame.Saveusing Bayat.Unity.SaveGameFree; // 保存金币数量 SaveGame.Saveint(coins, coins);读取时同样简单传入默认值防止首次启动报错// 读取金币如果存档不存在则返回 0 coins SaveGame.Loadint(coins, 0);这里的coins叫做标识符identifier相当于存档文件的钥匙。每个不同的数据用不同的标识符互不干扰。第三步完整保存玩家进度与关卡数据单纯保存一个整数显然不够游戏中通常需要一次保存整个玩家档案。推荐的做法是定义一个[System.Serializable]的存档数据类把所有进度装进一个对象里。参考官方示例 ExampleSaveCustom.cs我们可以这样设计using System; using System.Collections.Generic; using UnityEngine; using Bayat.Unity.SaveGameFree; [Serializable] public class PlayerSaveData { public int coins; // 金币 public int currentLevel; // 当前关卡 public int highScore; // 历史最高分 public Listint unlockedLevels; // 已解锁关卡列表 } public class GameSaveManager : MonoBehaviour { public PlayerSaveData playerData; public void SaveGame() { SaveGame.SavePlayerSaveData(player_save, playerData); } public void LoadGame() { playerData SaveGame.LoadPlayerSaveData(player_save, new PlayerSaveData()); } public void DeleteSave() { SaveGame.Delete(player_save); } void OnApplicationQuit() { SaveGame(); // 退出时自动保存 } }把这个脚本挂到任意 GameObject 上在游戏里修改playerData后调用SaveGame()即可完成存档整个存档数据会自动序列化成一个文件。这正是Unity 保存关卡数据与玩家进度的标准姿势。第四步自动保存物体位置零代码方案如果你的游戏只需要记录某个物体的位置、旋转、缩放SaveGameFree 还提供了一个傻瓜式组件SaveGameAuto零代码拖拽完成在 Hierarchy 中选中要保存的物体点击Add Component → Save Game Free → Auto Save分别填写positionIdentifier、rotationIdentifier、scaleIdentifier三个标识符选择序列化格式JSON/XML/Binary即可对应的源码实现见 SaveGameAuto.cs示例场景在Samples~/Auto Save/目录下。官方示例 ExampleSavePosition.cs 则演示了如何用代码保存Vector3Save类型的位置数据。第五步存档加密防止玩家作弊单机游戏的存档很容易被玩家用记事本改数值SaveGameFree 内置了加密方案。只需设置密码并开启Encode// 设置你自己的加密密码生产环境务必自定义 SaveGame.EncodePassword my_secret_password_2026; // 开启加密 SaveGame.Encode true; // 保存自动加密 SaveGame.Saveint(coins, 1000); // 读取自动解密 int coins SaveGame.Loadint(coins, 0);加密后存档文件内容会被编码器混淆处理普通玩家无法直接修改。加密逻辑由 SaveGameSimpleEncoder.cs 实现你还可以实现自己的ISaveGameEncoder换成更强的算法。第六步选择存档格式——JSON、XML 还是二进制SaveGameFree 默认使用 JSON 格式人类可读、便于调试同时也内置了另外两种序列化器格式特点适用场景JSON默认可读性强、跨平台稳定一般游戏存档、调试期推荐XML可读、带结构标记需要外部编辑存档的场景二进制体积小、速度快、不可读存档量大、追求性能切换格式非常简单替换Serializer属性即可// 换成二进制序列化器 SaveGame.Serializer new SaveGameBinarySerializer(); // 或换成 XML 序列化器 SaveGame.Serializer new SaveGameXmlSerializer();三种序列化器源码位于Runtime/Serializers/目录均实现了统一的ISaveGameSerializer接口。Unity 存档格式选择就看你更看重可读性还是性能。第七步进阶技巧——异步存档与文件管理异步保存避免卡顿当存档数据较大比如几百 KB 的地图数据时同步写入可能造成主线程卡顿。SaveGameFree 提供了 Async/Await 版本见 SaveGame.cs 中的SaveAsync/LoadAsyncasync void OnApplicationQuit() { await SaveGame.SaveAsyncint(coins, coins); }常用管理 APISaveGame.Exists(key)— 判断存档是否存在SaveGame.Delete(key)— 删除单个存档SaveGame.DeleteAll()— 清空所有存档适合新游戏按钮SaveGame.GetFiles()— 列出存档目录下的文件存档路径说明默认存档保存在Application.persistentDataPath各平台自动分配无需关心。你也可以通过SaveGamePath枚举切换为DataPath或自定义路径详见 SaveGamePath.cs。总结给新手的 3 条建议先跑官方示例Samples~目录下的 Save Position、Save Custom、Save Web、Auto Save 四个示例覆盖了 90% 的使用场景照着改最快。自定义存档类不要频繁调用SaveGame.Save保存单个变量把所有进度放进一个[Serializable]类里一次性保存性能更好、代码更整洁。正式发布前务必加密设置自己的EncodePassword不要用默认密码否则存档形同虚设。从金币、进度到关卡数据SaveGameFree 用最少的代码帮你搞定 Unity 存档的全部需求。现在就克隆项目跑起第一个存档示例吧祝你开发顺利【免费下载链接】SaveGameFreeSave Game Free is a free and simple but powerful solution for saving and loading game data in unity.项目地址: https://gitcode.com/gh_mirrors/sa/SaveGameFree创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考