说到数据的持久化存储,想必大家都会有各自的方法实现,小数据存储就用Unity里自带的PlayerPrefs这个类,多一点的数据则可以使用xml或者是json,今天就来说说这两种方法。
1. PlayerPrefs
这个应该很简单,和字典一样,需要设置key 和 value, 不过这里的value只有三种类型:int,float 和 string。存储和获取的API分别是PlayerPrefs.Set.. 和 PlayerPrefs.Get.. ; 很 简单,我就不多说了。
不过这里我得说一下之前遇到的一个坑(其实也不算,是我自己当时太懵逼,没反应过来,不想看的客官可以略过哈):我之前有个工程里用到了中英文UI切换,所以在单例类里声明了一个公共变量curLanguage ,并且直接赋值,比如:curLanguage="english",然后在点击切换语言的时候PlayerPrefs.Set并且PlayerPrefs.Get后,赋值给curLanguage,下次启动程序的时候,通过单例访问到当前的curLanguage,但是在第一次获取的时候curLanguage的值为空,所以PlayerPrefs.Get也为空,后来一查原因是当其他脚本使用该变量的时候,该变量因为没有在使用它的脚本之前去声明(写入内存),所以该值将为空。 解决办法是:1、将该变量的值在Awake里赋值 2、在创建的时候直接赋值,然后把该脚本的顺序放在第一位。。。
那么我们开始讲第二种方法xml
2.xml
xml其实也挺简单的,两个方法存储和获取数据,如下:
然后建个GameData类,里面的字段就是你想要存储的数据:
如下,我想要保存玩家的积分
public class GameData
{
public int playerIntegration;
public int computerOneIntegration;
public int computerTwoIntegration;
}
ok,就这样~