关于Unity自带的保存简单且持久化数据PlayerPrefs类的使用

news/2024/12/29 2:21:38/

Unity的PlayerPrefs类是用于在游戏中保存和读取玩家偏好设置或其他简单数据的工具。它提供了一种简单的键值对存储方式,可以在游戏中持久化保存数据。

PlayerPrefs提供了三种类型的数据的处理:分别是int,float,string。

具体使用方法如下:

1、保存数据。

PlayerPrefs.SetInt(key, value)

SetFloat(key, value)

SetString(key, value)

以上方法分别可以保存整数、浮点数、字符串到指定的键值。

例:

PlayerPrefs.SetInt(“age”, 26);SetFloat("weight", 61.5f);SetString("name", "张三");

2、读取数据。

PlayerPrefs.GetInt(key, defaultValue)

GetFloat(key, defaultValue)

GetString(key, defaultValue)

以上方法分别可以从指定的键值种读取整数、浮点数和字符串。如果键不存在,可以提供一个默认值作为返回结构。

例:

PlayerPrefs.GetInt(“age”);GetFloat("weight");GetString("name");PlayerPrefs.GetInt(“age”,26);//此处提供了个默认值26,当key=age不存在返回该值。

3、删除数据。

PlayerPrefs.DeleteKey(key);使用该方法可以删除指定键的数据。

PlayerPrefs.DeleteAll();使用该方法可以删除所有保存的数据。

4、检查键是否存在。

PlayerPrefs.HasKey(key);通过该方法可以检查指定的键是否存在。

以上就是PlayerPrefs类的一些操作。

在实际应用中,我们是经常会用到,因为它具有不少好处:

首先,PlayerPrefs提供了一个简单的接口来保存和读取数据,不需要复杂的文件操作或数据库管理所以使用起来比较简单易用。

其次,它支持多平台,比如Windows、Mac、Linux、iOS和Android等都是支持的。

还有就是持久化保存,PlayerPrefs保存的数据在游戏关闭后仍然存在,可以在下次游戏启动时继续使用。

但是它也存在一些缺点:

首先,如果保存的数据量很大,使用PlayerPrefs,应用的性能可能会受到数据量的影响,读取和写入操作可能会变慢。

其次存在数据安全问题,PlayerPrefs保存的数据可以被玩家手动修改,因此不适合保存敏感信息或重要数据。如果需要保存敏感数据,还是得使用其他更安全的存储方式。

这里顺便整理了下不同平台PlayerPrefs数据的保存路径:

  1. Windows:
    PlayerPrefs数据保存在注册表中的路径:HKEY_CURRENT_USER\Software[company name][product name]

  2. macOS:
    PlayerPrefs数据保存在用户的偏好设置目录中,路径为:~/Library/Preferences/[company name].[product name].plist

  3. Linux:
    PlayerPrefs数据保存在用户的本地配置目录中,路径为:~/.config/[company name]/[product name].prefs

  4. iOS:
    PlayerPrefs数据保存在应用的沙盒目录中,路径为:Application.persistentDataPath + "/Library/Preferences/com.[company name].[product name].plist"

  5. Android:
    PlayerPrefs数据保存在应用的沙盒目录中,路径为:/data/data/[package name]/shared_prefs/com.[company name].[product name].xml

其中,[company name]和[product name]是你在Unity项目设置中指定的公司名和产品名。

最后,特别说明的一点就是PlayerPrefs保存数据的唯一性。它意思就是说每个键(key)在PlayerPrefs中是唯一的,不能使用相同的键保存不同的值,否则后面保存的值会覆盖之前保存的值。


http://www.ppmy.cn/news/1229983.html

相关文章

【Python】12 GPflow安装

概述 GPflow 是一个基于TensorFlow 在 Python 中构建高斯过程模型的包。高斯过程是一种监督学习模型。 高斯过程的一些优点是: 不确定性是高斯过程的固有部分。高斯过程可以在不知道答案时告诉您。适用于小型数据集。如果您的数据有限,高斯过程可以从…

Vue23的计算属性(computed)

Vue2&3的计算属性(computed) Vue2的计算属性 原理:data中的属性通过计算得到新的属性,称为计算属性(computed)。computed 具有 getter 和 setter 属性 getter 属性在使用时分别有两次调用&#xff1a…

ts 联合react 实现ajax的封装,refreshtoken的功能

react ts混合双打,实现ajax的封装,以及401的特殊处理 import axios from axios import {AMDIN_EXPIRES_KEY,AMDIN_KEY,AMDIN_REFRESH_EXPIRES_KEY,AMDIN_REFRESH_KEY,COMMID_KEY,getToken,removeToken } from ../utils/user-token import { showMessage…

力扣-414.第三大的数(两种解法)

文章目录 第三大的数解法一(排序加遍历对比)解法二(遍历一遍加迭代) 第三大的数 题目: 给你一个非空数组,返回此数组中第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输…

【双指针】快乐数

快乐数 文章目录 快乐数01 题目详细02 算法原理快慢指针 03 代码Java代码;C代码 01 题目详细 202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这…

STM32获取最大堆栈空间

参考 stackflow相关讨论 原理 通过参考链接,可知探测Stack的最大深度是先在stack中填充不常用的特定值,然后实时检测这些值哪些发生了变化,变化的表示使用到了这个空间,如果程序完全遍历后,有些值还是没变&#xff…

Hibernate 函数 ,子查询 和原生SQL查询

一. 函数 聚合函数:count(),avg(),sum(),min(),max() 例:(1)查询Dept表中的所有的记录条数。 String hql" select count(*) from Dept "; Long count(Long)session.createQuery(hql).uniqueResult(); 当不确定返回的是…

IObit Unlocker丨解除占用程序软件

更多内容请收藏:https://rwx.tza-3.xyz 官网:IObit Unlocker “永远不用担心电脑上无法删除的文件。” 界面简单,支持简体中文,一看就会,只需要把无法删除/移动的文件或整个U盘拖到框里就行。 解锁率很高,…