前言
前段时间完成了自己的小游戏Konster的制作,今天重新又看了下代码。原先对关卡解锁数据的存储时用了Unity自带的PlayerPref(字典式存储数据)。
读取关卡数据的代码:
voidAwake ()
{foreach(Transform Child in transform) //Update Level Lists
{//Get Level's Name
string levelname = Child.name.Substring(0,1);//Load level data ,check if it is unlocked
if(PlayerPrefs.GetInt(levelname) == 0) //Set Lock
{
Child.GetChild(1).gameObject.SetActive(true);
}else{
Child.GetChild(1).gameObject.SetActive(false);
}
}
}
某一关通关时,解锁下一关:
public void LevelCompleted() //level completed
{int temp = thisLevel + 1; //next level
string nextLevel =temp.ToString();if (PlayerPrefs.GetInt(nextLevel) == 0) //check if next level is locked
PlayerPrefs.SetInt(nextLevel, 1);
PlayerPrefs.Save();
StartCoroutine(GameSuccess());//Show the GameSuccess UI
}
个人觉得虽然使用起来方便,但是如果我想存取一些对象结构数据的话很麻烦,于是自己试着写了个简单的对象数据存储。
使用JSON存储数据
什么是Json
JSON是一种轻量级的数据交换格式。它的本质其实就是一种对象以键值为基础保存的字符串。
比如有一个Person类:
public classPerson
{public stringname;public intage;public Person(string _name,int_age)
{//constructor
name =_name;
age=_age;
}