Unity PlayerPrefs

Unity PlayerPrefs

何为 PlayerPrefs

在Unity ScriptableObject 一文中我们提及了SO可以搭配PlayerPrefs来进行变更数据的持久化,那么什么是PlayerPrefs呢?
PlayerPrefs 是 Unity 提供的一个轻量级本地数据存储系统,用于在游戏运行时保存和读取玩家的偏好设置。它本质上是一个键值对(Key-Value)存储,数据会持久化保存在玩家设备的本地文件中。

PlayerPrefs 的数据存储在哪里?

平台 存储路径
Windows HKEY_CURRENT_USERSoftware[公司名][项目名](注册表)
macOS ~/Library/Preferences/[公司名]/[项目名].plist
Linux ~/.config/[公司名]/[项目名].prf
Android /data/data/[包名]/shared_prefs/[项目名].xml
iOS /Library/Preferences/[包名].plist
WebGL 浏览器本地存储(LocalStorage)

PlayerPrefs 的基本API

写入数据

// 保存整数
PlayerPrefs.SetInt("Score", 100);

// 保存浮点数
PlayerPrefs.SetFloat("Volume", 0.8f);

// 保存字符串
PlayerPrefs.SetString("PlayerName", "张三");

// 立即写入磁盘(可选,不调用也会在游戏退出时自动保存)
PlayerPrefs.Save();

读取数据

// 读取整数(如果不存在,返回默认值 0)
int score = PlayerPrefs.GetInt("Score");

// 读取浮点数(如果不存在,返回默认值 0.0f)
float volume = PlayerPrefs.GetFloat("Volume");

// 读取字符串(如果不存在,返回空字符串 "")
string name = PlayerPrefs.GetString("PlayerName");

// 带默认值的读取(推荐!)
int score = PlayerPrefs.GetInt("Score", 50);      // 不存在时返回 50
float volume = PlayerPrefs.GetFloat("Volume", 1.0f);
string name = PlayerPrefs.GetString("PlayerName", "默认玩家");

检查与删除

// 检查某个键是否存在
if (PlayerPrefs.HasKey("Score"))
{
    // 存在则读取
    int score = PlayerPrefs.GetInt("Score");
}

// 删除单个键
PlayerPrefs.DeleteKey("Score");

// 删除所有数据
PlayerPrefs.DeleteAll();

实际应用场景 & 使用

  1. 保存游戏设置(推荐配合ScriptableObject来使用哦):用SO作为运行时内存数据,方便各系统引用、PlayerPrefs作为持久化存储,负责保存和加载;
  2. 保存游戏进度、存档、删档;
  3. 不需要每次 Set 后都调用 Save(),会降低性能,而是在保存所有数据后统一调用一次即可

注意事项 与 局限性

问题 说明
数据量限制 不适合存储大量数据(如几十 MB 的存档),建议用文件系统或数据库
安全性 数据以明文存储,玩家可以手动修改(不适用于防作弊)
类型限制 只支持 intfloatstring 三种类型
平台差异 不同平台的存储位置不同,但 API 统一,无需额外处理
同步写入 Set 操作是异步的,调用 Save() 可强制立即写入磁盘
WebGL 限制 受浏览器存储限制(通常 5-10 MB)

PlayerPrefs VS 其他存储方案

存储方式 适用场景 数据大小 安全性
PlayerPrefs 用户设置、简单存档 小(KB 级别) 低(明文)
JSON / XML 文件 复杂存档、关卡数据 中(MB 级别) 低(可被修改)
SQLite 数据库 大量结构化数据 大(GB 级别)
加密文件 需要防作弊的数据
云存档 跨设备同步
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇