using LitJson; using System; using System.IO; using UnityEngine; using UnityEngine.Networking; using System.Collections.Generic; using System.Collections; public class JsonController { private static JsonController _Instance; public static JsonController Instance { get { if (_Instance == null) { _Instance = new JsonController(); } return _Instance; } } /// /// 初始化增加对于V2V3的支持 /// public JsonController() { Action writeVector2 = (v, w) => { w.WriteObjectStart(); w.WritePropertyName("x"); w.Write(v.x.ToString()); w.WritePropertyName("y"); w.Write(v.y.ToString()); w.WriteObjectEnd(); }; JsonMapper.RegisterExporter((v, w) => { writeVector2(v, w); }); Action writeVector3 = (v, w) => { w.WriteObjectStart(); w.WritePropertyName("x"); w.Write(v.x.ToString()); w.WritePropertyName("y"); w.Write(v.y.ToString()); w.WritePropertyName("z"); w.Write(v.z.ToString()); w.WriteObjectEnd(); }; JsonMapper.RegisterExporter((v, w) => { writeVector3(v, w); }); } public void Init() { } /// /// /// 保存Json成文件 /// /// /// public void SaveJson(string path, object o) { string directoryName = Path.GetDirectoryName(path); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } JsonData data = JsonMapper.ToJson(o); File.WriteAllText(path, data.ToString()); } /// /// 从文件中读取Json /// /// /// public JsonData ReadFromFile(string path) { string data = File.ReadAllText(path); return JsonMapper.ToObject(data.ToString()); } public IEnumerator WWWReadFromFile(string root, string[] paths, Action> ac) { Dictionary allDatas = new Dictionary(); for (int i = 0; i < paths.Length; i++) { string tablename = paths[i]; string filepath = root + tablename; UnityWebRequest www = UnityWebRequest.Get(filepath); yield return www.SendWebRequest(); if (www.isHttpError || www.isNetworkError) { Debug.LogError("UnityWebRequest加载出错"); yield break; } string data = www.downloadHandler.text; JsonData tmpJsonData = JsonMapper.ToObject(data.ToString()); allDatas.Add(tablename, tmpJsonData); } if (ac != null) { ac(allDatas); } } }