Unity的Json解析–寫Json檔案
Unity的Json解析<二>–寫Json檔案
本章對Json的寫檔案,做個處理.
寫檔案也非常簡單,把大象裝冰箱一樣,分三步,
建立檔案,
把內容寫入檔案,
然後關閉檔案.
內容
我們要處理的是所寫的內容,我們打算寫什麼都Json檔案中呢?
我們打算把昨天的格式繼續利用,還記得GameStatus ,這個是我修改的.不過,還算好用啊.
GameStatus.cs檔案程式碼如下:
using UnityEngine;
using System;
using System.Collections;
[Serializable]
public class GameStatus
{
public string gameName;
public string version;
public bool isStereo;
public bool isUseHardWare;
public refencenes[] statusList;
}
[Serializable]
public class refencenes
{
public refencenes()
{
name = "";
id = -1;
}
public string name;
public int id;
}
寫Json格式
寫JSon格式呢,我看網上都用的BinaryFormatter來處理,但是我發現這個跟昨天的問題型別,要是用BinaryFormatter的話,等儲存好的Json文字開啟後,各種空格,NULL和亂碼.這個主要是編碼格式的問題.
所以,我拒絕使用它了.
我使用File,直接WriteALLText來處理.
程式碼如下:
public void SaveJson()
{
string json = JsonUtility.ToJson(gameStatus);
string savePath = Application.dataPath + "/Resources/Test01.json" ;
File.WriteAllText(savePath, json, Encoding.UTF8);
Debug.Log("save:::" + savePath);
}
這樣就完成了寫檔案是否很簡便呢??!!!
寫Json的完整程式碼
完整程式碼如下:
using UnityEngine;
using System.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
public class WriteJson : MonoBehaviour
{
public GameStatus gameStatus;
public GameObject[] objects;
void Start()
{
gameStatus = new GameStatus();
gameStatus.statusList = new refencenes[objects.Length];
gameStatus.gameName = "JSON Write Test";
for (int i = 0; i < objects.Length; i++)
{
gameStatus.statusList[i] = new refencenes();
gameStatus.statusList[i].id = i;
gameStatus.statusList[i].name = objects[i].name;
}
}
public void SaveJson()
{
string json = JsonUtility.ToJson(gameStatus);
string savePath = Application.dataPath + "/Resources/Test01.json";
File.WriteAllText(savePath, json, Encoding.UTF8);
Debug.Log("save:::" + savePath);
}
}
怎麼使用?
我建立了一個測試工程.
只能如圖了:
你依然可以看到昨天寫檔案的痕跡.
當然我們只關注寫Json了.
在writeJson的屬性面板上,可看到,給它的Objects拖拽了一個cube,一個Capsule,作為儲存到JSon檔案中的內容的一部分.
然後在執行Unity 編輯器時,按下”S”,儲存鍵,就會在當前工程下的\Assets\Resources\中,產生了一個Test01.json的檔案,這個程式碼中可以看到的,你可隨意修改.
結果
讓我們來看看我們都保持都Json檔案中了什麼東西.
{"gameName":"JSON Write Test","version":"","isStereo":true,"isUseHardWare":false,"statusList":[{"name":"Cube","id":0},{"name":"Capsule","id":1}]}
這就是你所儲存的Json檔案中的內容.
我打算上傳都github,但是現在我github一直讓更新,更新不成功,打不開啊!
留下地方吧!!
**
至此,Json檔案的讀寫都搞定了.
更多
關於Json檔案的使用,我打算嘗試一個,能不能做個更好的配置,比如控制遊戲的場景配置和遊戲流程.打包後面不用修改,直接修改json 就可以建立一個完全不一樣的遊戲了.
這樣,是不是比較蠢呢!!可能會,比較複雜吧!!
只個想法,若有興趣,看看能不能實現一下.
———THE—–END————————–
若有問題,請隨時聯絡!!
非常感謝!!!