Unity 数据存储

Unity中的数据存储

  数据的本地持久化保存方式:

  A. PlayerPrefs:Unity 特有的存储方式,用于游戏简单的基本数据存储。

  B. XML:跨平台公认标准,兼容性好。

  C. JSON:轻量级数据模式,跟 XML 一样具有跨平台特性,同时语法更加简洁。

  D. 数据库:主流的数据库都支持,例如 MySQLSQLiteOracle 等。

  接下来我们主要说是第一种数据存储方式:PlayerPrefs ,主要用于简单的单机应用。

PlayerPrefs

  在 Unity 里面,提供了一个用于本地持久化保存与读取的类 —— PlayerPrefs

  工作原理非常简单,以键值对的形式将数据保存在本地文件中,然后程序可以根据这个名称取出上次保存的数值。

  PlayerPrefs 类支持三种数据类型的保存和读取:浮点型、整型和字符串型。

  分别对应的函数为:

  SetInt():保存整型数据;

  GetInt():读取整形数据;

  SetFloat():保存浮点型数据;

  GetFlost():读取浮点型数据;

  SetString():保存字符串型数据;

  GetString():读取字符串型数据;

  这些函数的用法基本一致使用 Set 进行保存,使用 Get 进行读取。在 PlayerPrefs 类中还提供了

  PlayerPrefs.DeleteKey (key : string):删除指定数据;

  PlayerPrefs.DeleteAll():删除全部键 ;

  PlayerPrefs.HasKey (key : string):判断数据是否存在;

举个例子

  创建测试脚本,挂载到 Mian Camera(主相机)上:

 1 using UnityEngine;
 2 
 3 /// <summary>
 4 ///  PlayerPrefs数据存储
 5 /// </summary>
 6 public class Date : MonoBehaviour
 7 {
 8     public string set_NAME;
 9     public string get_NAME;
10 
11     void OnGUI()
12     {
13         GUILayout.BeginHorizontal("box");
14         GUILayout.Label("姓名:");
15         set_NAME = GUILayout.TextArea(set_NAME, 200, GUILayout.Width(200));
16         if (GUILayout.Button("存储数据"))
17         {
18             //将输入的姓名保存到本地,命名为_NAME ;
19             PlayerPrefs.SetString("_NAME", set_NAME);
20         }
21 
22         GUILayout.EndHorizontal();
23         GUILayout.BeginHorizontal("box");
24         if (GUILayout.Button("读取数据"))
25         {
26             //读取本地数据中名为_NAME 的数据;
27             get_NAME = PlayerPrefs.GetString("_NAME");
28         }
29 
30         GUILayout.Label("你输入的姓名:" + get_NAME);
31         GUILayout.EndHorizontal();
32     }
33 }

  运行结果:

PlayerPrefs 数据存储在哪里

  * 在 Mac OS X 平台下,存储在 ~/Library/Preferences 文件夹,名为 unity.[company name].[product name].plist

  * 在 Windows 平台下,存储在注册表的 HKEY_CURRENT_USER\Software[company name][product name] 键下。

注意事项

  * 数据以键值对的形式存储,可以看做一个字典。

  * 数据通过键名来读取,当值不存在时,返回默认值。

posted @ 2020-06-05 11:15  Mr.Cat~  阅读(975)  评论(0编辑  收藏  举报