1. 程式人生 > >Unity 中儲存資料到JSON本地檔案

Unity 中儲存資料到JSON本地檔案

使用列表的方式儲存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}]