1. 程式人生 > >Unity數據的保存(JSon)

Unity數據的保存(JSon)

過程 ngs lis 類型 ide == sta tap 初始化

  在開發中保存數據是一個很重要的操作,在Unity開發中有很多的保方式,最近接觸到一種用JSon文件保存的方式。記錄下來便於以後回顧使用。

  關於數據有兩種:(1)初始數據:在開發過程中開發者已經保存好的數據。也就是一些項目的初始數據,這些數據有開發者自己他編寫的,這些數據需要應用開始使用直接讀取就好了。開發者可以直接創建json文件將一些初始化的數據添加進去就OK了;

1)//定義一個UnityJSon 類

public class UnityJSon : MonoBehaviour {

  private string fileName; // 定義一個string類型的變量 (文件名)

   private string path; //定義有個string類型的變量(創建路徑名)

   void Start ()

{

  path = Application.dataPath + "/Resources"; //給變量賦值指定路徑

   fileName = "Student.json"; //賦值名

if (!Directory .Exists (path )) //判斷路徑是否存在不存在就創建一個;

{

Directory.CreateDirectory(path);

}

fileName = Path.Combine(path, fileName); //將文件名和路徑合並

if (!File .Exists (fileName )) //判斷文 是否已經存在不存在就創建一個文件;

{

FileStream fs = File.Create(fileName);

fs.Close();

}

 Saves(); // 保存文件的方法;

   Read(); // 讀取文件的方法;

}

void Saves()

{ string json = JsonUtility.ToJson(PersonContainer.Instace);

File.WriteAllText(fileName, json, Encoding.UTF8); //utf8 萬國碼避免亂碼;

}

void Read ()

{

string json = File.ReadAllText(fileName, Encoding.UTF8);

PersonContainer.Instace = JsonUtility.FromJson<PersonContainer>(json);

for (int i=0; i< PersonContainer .Instace .personList .Count;i++ )

{

Debug.Log(PersonContainer.Instace.personList[i]);

}

}

void Update () { }

}

[System.Serializable]

public class PersonContainer

{

public List<Person> personList;

private static PersonContainer instance;

public static PersonContainer Instace

{

get { if (instance ==null )

{

instance = new PersonContainer();

}

return instance;

}

set { instance = value;

}

}

public PersonContainer ()

{

  personList = new List<Person>();

personList.Add(new Person(("zhangsan"), 10));

personList.Add(new Person("lisi", 11));

}

}

[System.Serializable]

public class Person

{ public string name; public int age;

public Person () { }

public Person (string name ,int age)

{ this.name = name;

this.age = age;

}

public override string ToString()

{

return this.name + "," + this.age;

}

}

:

Unity數據的保存(JSon)