1. 前言
PlayerPrefs是Unity内置的一个静态类,可以用于存储一些简单的数据类型:int ,string ,float。可以用它来做成计分板这类需要可持续化存储的小地方。
2. 存储位置
- Mac OS X:存储在~/Library/PlayerPrefs文件夹,名为unity.[company name].[product name].plist,这里company和product名是在project Setting中设置的
- windows:playerPrefs被存储在注册的HKCUSoftware[company name][product name]键下,这里company和product名是在project setting中设置的。
- Android:数据存储(持久化)在设备上。数据保存在SharedPreferences中。/data/data/包名/shared_prefs/pkg-name.xml
- IOS:/Library/Preferences/[应用ID].plist
3. 优缺点
- 优点:
- 简单易用:PlayerPrefs提供了易于使用的API,使得存储和读取数据变得简单。
- 持久化存储:PlayerPrefs可以持久化存储玩家的数据,即使应用程序关闭后也可以在下次启动时恢复数据。
- 跨平台支持:PlayerPrefs在不同平台上的存储位置不同,但都提供了统一的API,使得跨平台开发变得更加容易。
- 缺点:
- 数据类型限制:PlayerPrefs只能存储字符串、整数、浮点数和布尔值等基本数据类型,对于复杂的数据结构需要自行处理。
- 不适合大量数据的存储:PlayerPrefs不适合存储大量数据,因为所有的数据都会被存储在同一个文件中,可能会导致读写速度变慢。
- 不安全:PlayerPrefs存储的数据可以被其他玩家或者恶意软件修改,因此不适合存储敏感信息。
- 重复工作量多。
- 程序崩溃,数据无法保存。
- Key值同名,数据会被覆盖。
3. 使用方法
- SetInt(string key, int value):保存整型数据;
- GetInt(string key, int defaultValue):读取整形数据;
- SetFloat(string key, float value):保存浮点型数据;
- GetFlost(string key, float defaultValue):读取浮点型数据;
- SetString(string key, string value):保存字符串型数据;
- GetString(string key, string defaultValue):读取字符串型数据;
- PlayerPrefs.DeleteKey (key : string):删除指定数据;
- PlayerPrefs.DeleteAll() :删除全部键 ;
- PlayerPrefs.HasKey (key : string):判断数据是否存在的方法;
- PlayerPrefs.Save():保存,避免崩溃数据未保存;
//存储整型数据
PlayerPrefs.SetInt("score",99);
//存储浮点型数据
PlayerPrefs.SetFloat("level",1.11f);
//存储字符串数据
PlayerPrefs.SetString("name","张三");
//取出key为"score"的整型数据
int intVal = PlayerPrefs.GetInt("score");
//取出key为"level"的浮点型数据
float floatVal = PlayerPrefs.GetFloat("level");
//获取key为"name"的字符串数据
string strVal = PlayerPrefs.GetString("name");
//删除所有存储数据
PlayerPrefs.DeleteAll();
//删除key为"score"的数据
PlayerPrefs.DeleteKey("score");
//查找是否存在key为"score"的数据
bool exist = PlayerPrefs.HasKey("score")