Unity 中儲存資料到JSON本地檔案
阿新 • • 發佈:2019-01-28
使用列表的方式儲存JSON檔案到本地,,雖然可以實現,但是讀取的時候總出現各種問題,也許是個人水平有限,,個人還是感覺用Dictionary這種鍵值對的方式儲存,更新讀取都很方便,推薦檢視:點選連結,,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;
public class Person
{
public string Name { get; set; }
public double HP { get; set; }
public int Level { get; set; }
public double Exp { get; set; }
public int Attak { get; set; }
}
public class PersonList
{
public List<Person> list = new List<Person>();
}
public class Classtext : MonoBehaviour {
public PersonList personList = null;
// Use this for initialization
void Start () {
Person person = new Person();
person.Name = "Czhenya";
person.HP = 100;
person.Level = 30;
person.Exp = 3333.33;
person.Attak = 50;
string json1 = JsonMapper.ToJson(person);
Debug.Log(json1.ToString());
Save(person);
}
/// <summary>
/// 儲存JSON資料到本地的方法
/// </summary>
/// <param name="player">要儲存的物件</param>
public void Save(Person player)
{
string filePath = Application.dataPath + @"/JsonPerson.json";
// Debug.Log(Application.dataPath + @"/JsonPerson.json");
personList = new PersonList();
if (!File.Exists(filePath))
{
personList.list.Add(player);
}
else
{
//若沒有資訊則新建,有則 更新,,,
bool bFind = false;
//遍歷列表
for (int i = 0; i < personList.list.Count; i++)
{
Person savePlayer = personList.list[i];
if (player.Name == savePlayer.Name)
{
savePlayer.Level = player.Level;
savePlayer.HP = player.Level;
savePlayer.Exp = player.Exp;
savePlayer.Attak = savePlayer.Attak;
bFind = true;
break;
}
}
if (!bFind)
{
personList.list.Add(player);
}
}
//找到當前路徑
FileInfo file = new FileInfo(filePath);
//判斷有沒有檔案,有則開啟檔案,,沒有建立後開啟檔案
StreamWriter sw = file.CreateText();
//ToJson介面將你的列表類傳進去,,並自動轉換為string型別
string json = JsonMapper.ToJson(personList.list);
//將轉換好的字串存進檔案,
sw.WriteLine(json);
sw.Close();
sw.Dispose();
}
}
下面是執行後,新創建出來的JsonPerson.json檔案的內容,,,
[{"Name":"Czhenya","HP":100.0,"Level":30,"Exp":3333.33,"Attak":50}]