Unity中的三种数据存储:数据存储也称为数据持久化
一、PlayerPrefs
PlayerPrefs是Unity引擎自身提供的一个用于本地持久化保存与读取的类,以键值对的形式将数据保存在文件中,然后程序可以根据关键字提取数值。
PlayerPrefs类支持3种数据类型的保存和读取:浮点型、整形、字符串型
1.保存数据
//保存整型数据PlayerPrefs.SetInt("int1",123);//保存浮点型数据PlayerPrefs.SetFloat("float1",123.4f);//保存字符串型数据PlayerPrefs.SetString("string1","名字");
2.读取数据
//读取整数型数据PlayerPrefs.GetInt("int1");//读取浮点型数据PlayerPrefs.GetFloat("float1");//读取字符串型数据PlayerPrefs.GetString("string1");
3.获取数据
通过Key值获取在本地持久化的数据,如果Key值不存在,那么就会返回一个默认值
//读取整数型数据,如果key值不存在 那么就会返回一个默认值0PlayerPrefs.GetInt("int1",123);//读取浮点型数据,如果key值不存在 那么就会返回一个默认值0.0PlayerPrefs.GetFloat("float1",123.4f);//读取字符串型数据,如果key值不存在 那么就会返回一个默认值""PlayerPrefs.GetString("string1","名字");
4.查找是否存在该键值
PlayerPrefs.HasKey("int");
5.清除所有记录
PlayerPrefs.DeleteAll();
6.删除其中某一条记录
PlayerPrefs.DeleteKey("int");
7.将记录写入磁盘
PlayerPrefs.Save()
8.示例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerPabsTest : MonoBehaviour
{// Use this for initializationvoid Start () {//写入姓名数据PlayerPrefs.SetString("姓名","张三");//查找是否存在键值为'姓名'的数据if (PlayerPrefs.HasKey("姓名")){//读取键值为 '姓名' 的数据 并打印Debug.Log(PlayerPrefs.GetString("姓名"));}}
}
打印结果:
张三
9.不同平台的PlayerPrefs存储路径
- Mac OS X:~/Library/Preferences
- Windows:HKCU\Software[company name][product name]
- Linux:~/.config/unity3d/ [CompanyName]/ [ProductName]
- Windows Store Apps: %userprofile% AppData Local\Packages\[ProductPackageld]>/LocalSt ate/playerprefs.dat
- WebPlayer
- Mac OS X: ~/Library/ Preferences/Unity/ WebPlayer Prefs
- Windows: %APPDATA% Unity\WebPlayer Prefs
10.优缺点
- 优点:可以快速便捷的处理一些数据,比XMLQ、JSON等其他方法要快的多,对于开发者来说,读写也非常简单
- 缺点:只能对整数型、浮点型和字符串型三种类型数据进行处理,如果遇上非常庞大的一个数据量就会非常麻烦不利于管理
在开发平时的一些小项目对数据存储功能没有强的需求时,使用效果很好!
注意:PlayerPrfs不同数据,不能同名,即便是不同的数据类型