【Unity3D 教程系列第 15 篇】本地数据持久化之 Playerprefs 类

这是【Unity3D 教程系列第 15 篇】,如果觉得有用的话,欢迎关注专栏。

一:什么是 PlayerPrefs 类

作用
Unity3d提供的用于本地数据持久化保存与读取的类。

工作原理
以“键值对”的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值(windows和ios系统的保存路径不一样,见文末)。

二:PlayerPrefs 类中的静态方法

PlayerPrefs 类目前只支持3种数据类型的保存和读取,分别是浮点型(float),整型(int),字符串型(string)。

写入数据:SetFloat(),SetInt(),SetString()
读取数据:GetFloat(),GetInt(),GetString()
删除数据:DeleteKey(),DeleteAll()
检查数据:HasKey()
强制保存数据:Save()

这些函数的用法基本一致使用 Set 进行保存,使用 Get 进行读取。所有的 key(键) 都是 string 类型,value(值)取决于你用的类型。

举例说明

1:写入数据
    void Awake()
    {
        //存取数据
        PlayerPrefs.SetFloat("鸣人", 18.5f);          //写入浮点型
        PlayerPrefs.SetInt("佐助",17);                //写入整型
        PlayerPrefs.SetString("苏", "程序人生道可道");//写入字符串型
    }
2:读取数据
    void Start()
    {
        //读取数据
        Debug.Log(PlayerPrefs.GetFloat("鸣人"));      //读取浮点型
        Debug.Log(PlayerPrefs.GetInt("佐助"));        //读取整型
        Debug.Log(PlayerPrefs.GetString("苏"));       //读取字符串类型
    }

运行u3d,结果如下图所示
在这里插入图片描述
如果我们获取一个不存在的 key 返回的是 null 吗?
答:不是,当我们尝试获取一个不存在的 Key 时,float,int 类型的会返回默认值0,string类型的返回默认值空字符串,而不是 null。
不过,unity允许存入默认数值,所以在读取数值的时候,返回默认数值的情况有两种,一种是因为不存在该 Key 值,另一种是因为自己存入了默认值。

3:删除数据
 PlayerPrefs.DeleteKey("鸣人");  //删除指定key对应的值
 PlayerPrefs.DeleteAll();       //删除所有数据
4:检查数据
    void Start()
    {
        if (PlayerPrefs.HasKey("鸣人"))
        {
            Debug.Log("执行功能");
        }
    }
5:保存数据
PlayerPrefs.Save();

unity会为我们自动保存数据,当然你也可以调用 Save() 函数进行强制保存。

三:Windows 和 Mac系统 PlayerPrefs 的储存位置

以下内容来自百度

1:Windows:
PlayerPrefs 被存储在注册表的 HKCU\Software[company name][product name]键下。
打开“运行”输入 regedit 打开注册表),这里 company 和 product 名是在 Project Setting 中设置的,是持久本地化存储。

2:Mac
PlayerPrefs 存储在~/Library/PlayerPrefs文件夹,名为 unity.[company name].[product name].plist。
这里 company 和 product 名是在 Project Setting 中设置的,相同的 plist 用于在编辑器中运行的工程和独立模式 (打开 Find,按住 Option 键,点击“前往 →“资源库”,就可以找到 Preferences 文件夹). 。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen Su

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值