数据的持久化存储

96
OneMore2018
2017.10.27 19:48* 字数 507

         说到数据的持久化存储,想必大家都会有各自的方法实现,小数据存储就用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,就这样~

Unity3D