PlayerPrefs&&JsonUtility(实现本地储存数据)★★★
★ PlayerPrefs
- class in UnityEngine
- 描述
- 在游戏会话之间存储和访问玩家偏好。
- Editor/独立平台
- On macOS PlayerPrefs are stored in ~/Library/Preferences folder, in a file named unity.[company name].[product name].plist, where company and product names are the names set up in Project Settings. The same .plist file is used for both Projects run in the Editor and standalone players.
- 在 Windows 上,PlayerPrefs 存储在 HKCU\Software[公司名称][产品名称] 项下的注册表中,其中公司和产品名称是 在“Project Settings”中设置的名称。
- 在 Linux 上,PlayerPrefs 位于 ~/.config/unity3d/[公司名称]/[产品名称] 中,其中同样使用在“Project Settings”中指定的公司和产品名称。
- 在 Windows 应用商店应用程序中,PlayerPrefs 位于 %userprofile%\AppData\Local\Packages[产品包 ID]>\LocalState\playerprefs.dat 中
- 在 Windows Phone 8 上,PlayerPrefs 位于应用程序的本地文件夹中,另请参阅:Directory.localFolder
- 在 Android 中,数据存储(持久保存)在设备上。数据保存在 SharedPreferences 中。C#/JavaScript、Android Java 和原生代码全都可以访问 PlayerPrefs 数据。PlayerPrefs 数据在物理存储在 /data/data/pkg-name/shared_prefs/pkg-name.xml 中。
- 在 WebGL 上,PlayerPrefs 使用浏览器的 IndexedDB API 进行存储。
- 在 iOS 上,PlayerPrefs 存储在 /Library/Preferences/[Bundle ID].plist 中。
1、静态函数
函数名 | 作用 |
---|
DeleteAll | 从偏好中删除所有键和值。请谨慎使用。 | DeleteKey | 从偏好中删除 key 及其对应值。 | GetFloat | 返回偏好设置文件中与 key 对应的值(如果存在)。 | GetInt | 返回偏好设置文件中与 key 对应的值(如果存在)。 | GetString | 返回偏好设置文件中与 key 对应的值(如果存在)。 | HasKey | 如果 key 在偏好中存在,则返回 true。 | Save | 将所有修改的偏好写入磁盘。 | SetFloat | 设置由 key 标识的偏好的值。 | SetInt | 设置由 key 标识的偏好的值。 | SetString | 设置由 key 标识的偏好的值。 |
★ JsonUtility
- 描述
用于处理 JSON 数据的 Utility 函数。
1、静态函数
函数名 | 作用 |
---|
FromJson | 通过 JSON 表示形式创建对象。 | FromJsonOverwrite | 通过读取对象的 JSON 表示形式覆盖其数据。 | ToJson | 生成对象的公共字段的 JSON 表示形式。 |
PlayerPrefs&&JsonUtility.TOJson(实现本地保存数据)★★★
JsonUtility.ToJson|通过 JSON 表示形式创建对象 public static string| ToJson (object obj);通过读取对象的 JSON 表示形式覆盖其数据。 public static string T|oJson (object obj, bool prettyPrint);
参数 | |
---|
obj | 要转换为 JSON 形式的对象。 | prettyPrint | 如果为 true,则格式化输出以实现可读性。如果为 false,则格式化输出以实现最小大小。默认为 false。 |
代码演示:
函数参数:data:所有都继成object所有可以传脚本参数等、key是可以来读取的名字
读取数据:
private void save(object date,string key)
{
var jsonDate=JsonUtility.ToJson(date) ;
将数据转换为 JSON 形式的对象,
PlayerPrefs.SetString(key,jsonDate);
返回key偏写好的值
PlayerPrefs.Save();
将所有读取到的key写入磁盘
}
把数据从磁盘读取出来覆盖原有的数据
private void load(object date, string key)
{
判断:如果 key 存在,则返回 true
if (PlayerPrefs.HasKey(key))
{
读取磁盘对应的key数据覆盖原来的数据
JsonUtility.FromJsonOverwrite(PlayerPrefs.GetString(key), date);
}
}
|