持久数据存储的话题在 iOS 和 Android 上都经常看到,更不用说跨平台的 Unity。
首先,我们来谈谈最简单的数据存储方式。
1.PlayerPrefs 类
在iOS中,我们经常使用一种简单的方式来存储和读取简单的数据,即通过NSUserDefaults类来获取和读取数据。
Android也有类似的方式来存储和获取数据。
当然,我们要学习的Unity也有类似的方式来存储和获取数据。
下面我用iOS来解释一下。
iOS 的数据存储是:
[[NSUserDefaults standardUserDefaults]setObject:@”我是木子才!” forKey:@”name”];
读取的数据是:
NSString *content = [[NSUserDefaultsstandardUserDefaults]objectForKey:@”name”];
就这么简单android 数据储存方式,这么多人随意存数据,汗~~~
当然封装起来更方便、简单、快捷。
那么,让我们看看 Unity 是如何做到的。
数据存储是:
PlayerPrefs.SetString(“name”,”我是木子才!”);
读取的数据是:
stringm_info=PlayerPrefs.GetString(“name”);
其实看起来挺简单的,使用方法也差不多。 Android 类似,但 Android 功能更强大。
/************************我是移动的分割线****************/
好的,现在让我们看看 PlayerPrefs 类。
PlayerPrefs 可以保存和读取 3 种基本数据类型,即整数、浮点数和字符串。方法如下:
公共静态函数 SetInt(key: string, value: int): void; -> 保存整数数据
公共静态函数 SetFloat(key: string, value: float): void; -> 保存浮点数据
公共静态函数 SetString(key: string, value: string): void; -> 保存字符串数据
public static function GetInt(key: string, defaultValue: int = 0): int; -> 读取整型数据
公共静态函数GetFloat(key: string, defaultValue: float = 0.0F): float; -> 读取浮点数据
公共静态函数GetString(key: string, defaultValue: string = “”): string; -> 读取字符串数据
使用方法请参考上面的演示。很简单。
set需要两个参数来判断保存的时候,第一个是key,第二个是value。
Get需要一个参数来判断什么时候读取android 数据储存方式,这才是关键。
官方文档上还有几个方法。一起来看看吧~~
公共静态函数 DeleteAll(): void; -> 删除所有key内容和value内容,称为清除数据。
公共静态函数 DeleteKey(key: string): void; -> 删除指定的key及其对应的值。
公共静态函数 HasKey(key: string): bool; -> 判断指定key是否存在,存在则返回true。
/************************广告出租~~~******************/
现在让我们付诸实践吧。
让我们从代码开始。看不懂代码的可以看这篇文章。
代码如下:
using UnityEngine; using System.Collections; public class testScript : MonoBehaviour { string m_info = "Nothing"; void OnGUI() { GUI.BeginGroup(new Rect(Screen.width * 0.5f - 100, Screen.height * 0.5f - 100, 500, 200), ""); GUI.Label(new Rect(0, 10, 200, 30), m_info); GUI.skin.label.alignment = TextAnchor.MiddleCenter; if (GUI.Button(new Rect(25, 50, 150, 30), "写入数据")) { PlayerPrefs.SetString("name", "我是木子才!"); } if (GUI.Button(new Rect(25, 100, 150, 30), "读取数据")) { m_info = PlayerPrefs.GetString("name"); } if (GUI.Button(new Rect(0, 150, 200, 30), "将显示Label设置为Nothing")) { m_info = "Nothing"; } GUI.EndGroup(); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
完成后会看到这个界面,打完代码也会看到同样的效果,duang~~~
点击按钮写入数据后,没有任何变化~~~
然后,再次点击读取数据,就可以看到效果了,duang~~~~
当你点击第三个按钮时,它会变成第一张图片的效果,然后你点击按钮读取数据再次看到效果。
随意玩耍。
之后退出进入,点击按钮读取数据,就可以看到效果了~~~~duang~~~~
这次就到此为止~~~谢谢大家~~~
暂无评论内容