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;
|
}
|
}
|
|
/// <summary>
|
/// 初始化增加对于V2V3的支持
|
/// </summary>
|
public JsonController()
|
{
|
Action<Vector2, JsonWriter> 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<Vector2>((v, w) =>
|
{
|
writeVector2(v, w);
|
});
|
|
Action<Vector3, JsonWriter> 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<Vector3>((v, w) =>
|
{
|
writeVector3(v, w);
|
});
|
}
|
|
public void Init() { }
|
/// <summary>
|
/// /// 保存Json成文件
|
/// </summary>
|
/// <param name="path"></param>
|
/// <param name="o"></param>
|
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());
|
}
|
|
/// <summary>
|
/// 从文件中读取Json
|
/// </summary>
|
/// <param name="path"></param>
|
/// <returns></returns>
|
public JsonData ReadFromFile(string path)
|
{
|
string data = File.ReadAllText(path);
|
|
return JsonMapper.ToObject(data.ToString());
|
}
|
|
|
public IEnumerator WWWReadFromFile(string root, string[] paths, Action<Dictionary<string, JsonData>> ac)
|
{
|
Dictionary<string, JsonData> allDatas = new Dictionary<string, JsonData>();
|
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);
|
}
|
}
|
}
|