首页/ 第 13 章 · 2D 游戏开发/ 第 220 课
LESSON 220 · 2D 游戏开发

2D 存档读档(PlayerPrefs)

存档读档完成。下一课做 2D 音效与音乐整合。

⏱ 约 14 分钟📊 难度:入门🗂 第 13 章 · 2D 游戏开发📍 第 220 / 300 课
课程进度
220 / 300

🎯本节学习目标

  • 掌握 PlayerPrefs
  • 实现游戏存档
  • 实现读档

🚀课程导读

“退出重进进度还在”——存档系统。本课用 PlayerPrefs 实现金币、关卡、位置保存。

PlayerPrefs 基础

键值对“小本本”。

  1. 【PlayerPrefs】Unity 内置的简单存档:键值对,自动持久化(存本地)。
  2. 【类型】SetInt / SetFloat / SetString / GetInt / GetFloat / GetString。
  3. 【写入】PlayerPrefs.SetInt("Coins", 100); PlayerPrefs.Save();
  4. 【读取】int coins = PlayerPrefs.GetInt("Coins", 0); // 第二个参数是默认值
  5. 【删除】PlayerPrefs.DeleteKey("Coins"); 或 DeleteAll()。
  6. 【特点】适合小数据(设置、金币、进度);大数据用文件(第 221 课)。
  7. 【位置】数据存在系统注册表/本地文件(不同平台位置不同)。
  8. 【注意】键名全局唯一,用有意义的命名("Game1_Coins")。
  9. 【保存时机】数据变化时保存,或退出时统一保存。
  10. 【测试】存值后关闭/重开项目,值还在。
  11. 【完成】存档基础“通了”。
  12. 【注意】Save() 立刻写盘,重要数据调用它。
💡
PlayerPrefs = 键值对小本本:Set 写、Get 读(带默认值)。小数据存档首选。

游戏存档实现

金币+关卡+位置。

  1. 【存档类 SaveSystem】
  2. public static class SaveSystem {
  3. public static void SaveGame(int coins, int level, float x, float y) {
  4. PlayerPrefs.SetInt("Coins", coins);
  5. PlayerPrefs.SetInt("Level", level);
  6. PlayerPrefs.SetFloat("PlayerX", x);
  7. PlayerPrefs.SetFloat("PlayerY", y);
  8. PlayerPrefs.Save();
  9. }
  10. public static bool HasSave() { return PlayerPrefs.HasKey("Coins"); }
  11. public static void LoadGame(out int coins, out int level, out float x, out float y) {
  12. coins = PlayerPrefs.GetInt("Coins", 0);
  13. level = PlayerPrefs.GetInt("Level", 1);
  14. x = PlayerPrefs.GetFloat("PlayerX", 0);
  15. y = PlayerPrefs.GetFloat("PlayerY", 0);
  16. }
  17. }
  18. 【保存点】检查点(第 218 课)触发 SaveGame(金币,关卡,位置)。
  19. 【读档】开始界面“继续游戏”:HasSave 则读档恢复。
  20. 【恢复】加载场景后把玩家放回 (x,y)、金币写回 UI。
  21. 【自动保存】每过检查点自动存,玩家不丢进度。
  22. 【清档】“新游戏”按钮:PlayerPrefs.DeleteAll()。
  23. 【注意】PlayerPrefs 存小数有精度,位置精确存档用文件系统更稳(第 221 课)。
  24. 【验证】玩一会→退出→重进→继续,进度恢复。
  25. 【完成】你的游戏“记性好”了!
存档心法:检查点触发保存 + 开始界面读档 + 新游戏清档。三件套。

常见错误与排查

错误:读档后位置错/数值丢?
原因:键名不一致或没 Save
解决:统一键名;重要数据调用 PlayerPrefs.Save() 立即写盘。

动手练习

课后小任务(做出来才算真的学会)

  • 实现金币/关卡/位置存档
  • 做“继续游戏”读档
  • 做“新游戏”清档

本节小结

存档读档完成。下一课做 2D 音效与音乐整合。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课2D HUD 与计分系统