当前位置: 首页 > news >正文

Unity 本地数据持久化之 PlayerPrefs

在 Unity 中,可以使用 PlayerPrefs 类来进行客户端本地数据存储操作!

静态函数

PlayerPrefs 类包含以下静态函数:

public static void SetInt (string key, int value);
// 设置由 key 键确定的整数值

public static void SetFloat (string key, float value);
// 设置由 key 键确定的浮点数值

public static void SetString (string key, string value);
// 设置由 key 键确定的字符串值

public static int GetInt (string key);
public static int GetInt (string key, int defaultValue);
// 获取存储文件中 key 键对应的整数值(不存在则返回 defaultValue)

public static float GetFloat (string key);
public static float GetFloat (string key, float defaultValue);
// 获取存储文件中 key 键对应的浮点数值(不存在则返回 defaultValue)

public static string GetString (string key);
public static string GetString (string key, string defaultValue);
// 获取存储文件中 key 键对应的字符串值(不存在则返回 defaultValue)

public static void Save ();
// 将所有修改的内容写入硬盘(默认情况下,Unity 会在 OnApplicationQuit() 执行过程中自动写入)

public static bool HasKey (string key);
// 判断 key 键是否存在(存在则返回 true)

public static void DeleteKey (string key);
// 删除 key 键以及其对应的值

public static void DeleteAll ();
// 删除所有存储内容(需谨慎使用)

使用示例

private string userName;
if (!PlayerPrefs.HasKey("userName"))
{
    PlayerPrefs.SetString("userName", "fightsyj");
}
userName = PlayerPrefs.GetString("userName");

存储位置

在 Windows 上,PlayerPrefs 存储在 HKCU\Software\[公司名称]\[产品名称] 项下的注册表中,其中公司和产品名称是在 Edit->Project Settings->Player 中设置的名称。

在 Linux 上,PlayerPrefs 位于 ~/.config/unity3d/[公司名称]/[产品名称] 中,其中同样使用在 Edit->Project Settings->Player 中指定的公司和产品名称。

在 Windows 应用商店应用程序中,PlayerPrefs 位于 %userprofile%\AppData\Local\Packages\[产品包 ID]>\LocalState\playerprefs.dat 中。

在 Windows Phone 8 上,PlayerPrefs 位于应用程序的本地文件夹中。

在 Android 中,数据存储(持久保存)在设备上。数据保存在 SharedPreferences 中。

在 WebGL 上,PlayerPrefs 使用浏览器的 IndexedDB API 进行存储。

在 iOS 上,PlayerPrefs 存储在 /Library/Preferences/[Bundle ID].plist 中。

ps

快速打开注册表:Win + R -> regedit

相关文章:

  • 给投资入门者的几点建议
  • Lua实战之布尔值(boolean)排序
  • 生命的厚味
  • Lua 使用 os.time 获取时间戳需谨慎
  • 用BAT和VBS搜集AD中的客户PC资料
  • Lua string.format() 使用整理
  • 一个成功创业者的心得
  • Lua实战之以非科学记数法输出小数
  • SVN服务器的搭建与使用
  • 犹太人常说的理财故事
  • SVN设置强制注释才能提交
  • 35岁前成功的12条黄金法则
  • SVN比较两个文件差异
  • 李嘉诚传给年青人的人生忠告
  • 2021-1024程序员节
  • 【RocksDB】TransactionDB源码分析
  • es的写入过程
  • input实现文字超出省略号功能
  • JavaScript对象详解
  • javascript数组去重/查找/插入/删除
  • jquery ajax学习笔记
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • mac修复ab及siege安装
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • nginx 配置多 域名 + 多 https
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • React中的“虫洞”——Context
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 对超线程几个不同角度的解释
  • 回流、重绘及其优化
  • 简单易用的leetcode开发测试工具(npm)
  • 爬虫模拟登陆 SegmentFault
  • 强力优化Rancher k8s中国区的使用体验
  • 人脸识别最新开发经验demo
  • 阿里云服务器购买完整流程
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (差分)胡桃爱原石
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (算法二)滑动窗口
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转载)Linux 多线程条件变量同步
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • 、写入Shellcode到注册表上线
  • .NET 5种线程安全集合
  • .NET 服务 ServiceController
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net6 Api Swagger配置
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded