Unity数据持久化——PlayerPrefs

简介: Unity数据持久化——PlayerPrefs

首要要思考一个问题:什么是数据持久化?

数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。通俗来讲就是将游戏数据存储到硬盘,硬盘中数据读取到游戏中,也就是传统意义上的存盘。

PlayerPrefs是unity提供的可以用于存储读取玩家数据的公共类,PlayerPrefs的数据存储类似于键值对存储,即一个键对应一个值。它提供了存储3种数据的方法,分别是int、float、string。键的类型为string类型,而值int float string对应3种API。

举个例子:

PlayerPrefs.setInt( "myAge",21);
PlayerPrefs.SetFloat( "myHeight", 120f);
PlayerPrefs.setstring("myName","张三");

PlayerPrefs会直接调用set相关方法只会把数据存到内存里,当游戏结束时unity会自动把数据存到硬盘中。如果游戏不是正常结束的而是崩溃数据是不会存到硬盘中的,只要调用该方法就会马上存储到硬盘中。

PlayerPrefs.Save();

PlayerPrefs是有局限性的它只能存3种类型的数据。如果你想要存储别的类型的数据只能降低精度或者上升精度来进行存储。

bool sex = true;
PlayerPrefs.SetInt( "sex", sex ?1 : 0);

如果不同类型用同一键名进行存储会进行覆盖

PlayerPrefs.setFloat( "myAge",20.2f);

读取相关的API

运行时,只要我们Set了对应键值对,即使没有马上存储Save在本地,也能够读取出信息。

PlayerPrefs.GetInt(string , value) //第二个参数就是默认值,若不存在,那么就直接取第二个参数作为返回值
GetInt、GetFloat、GetString//同理
PlayerPrefs.HasKey(string) //判断string为key的值是否存在
PlayerPrefs.DeleteKey(“myAge”); //删除某个键值对
PlayerPrefs.DeleteAll();//删除所有的键值对

举个例子:

//int
int age = PlayerPrefs.GetInt("myAge");
print(age);//前提是 如果找不到myAge对应的值 就会返回函数的第二个参数 默认值
age = PlayerPrefs.GetInt("myAge", 100);
print(age);
//float
float height = PlayerPrefs.GetFloat("myHeight", 1000f);
print(height);
//string
string name = PlayerPrefs.GetString("myName");
print(name);//判断数据是否存在
if( PlayerPrefs.HasKey("myName") )
{
    print("存在myName对应的键值对数据");
}
PlayerPrefs.DeleteKey("myAge");//删除指定键值对
PlayerPrefs.DeleteAll();//删除所有存储的信息


目录
相关文章
|
7月前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
203 2
|
8月前
|
JSON Java 数据处理
Unity 数据读取|(二)多种方式读取文本文件
Unity 数据读取|(二)多种方式读取文本文件
|
7月前
|
存储 JSON 图形学
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
209 0
|
8月前
|
数据采集 编解码 图形学
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
366 0
|
8月前
|
存储 安全 API
Unity 数据读取|(六)PlayerPrefs解析
Unity 数据读取|(六)PlayerPrefs解析
|
8月前
|
XML 存储 安全
Unity 数据读取|(五)XML文件解析(XmlDocument,XmlTextReader)
Unity 数据读取|(五)XML文件解析(XmlDocument,XmlTextReader)
|
8月前
|
存储 JSON C#
Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)
Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)
|
8月前
|
存储 XML JSON
Unity 数据读取|(三)ini文件解析(INIParser,StreamReader,System.Runtime.InteropServices)
Unity 数据读取|(三)ini文件解析(INIParser,StreamReader,System.Runtime.InteropServices)
|
8月前
|
存储 图形学 Android开发
Unity 数据读取|(一)宏的定义和资源路径
Unity 数据读取|(一)宏的定义和资源路径
|
8月前
|
XML C# 图形学
【Unity 3D】C#从XML中写入、读取、修改数据(附源码)
【Unity 3D】C#从XML中写入、读取、修改数据(附源码)
122 0