140 lines
4.0 KiB
C#
140 lines
4.0 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.Networking;
|
|
|
|
/// <summary>
|
|
/// 数据加载器
|
|
/// </summary>
|
|
/// <typeparam name="T">数据类型</typeparam>
|
|
public class DataLoader<T>
|
|
{
|
|
/// <summary>
|
|
/// 数据对象列表
|
|
/// </summary>
|
|
public static List<T> DataList;
|
|
|
|
public static Dictionary<string, T> DataDics;
|
|
|
|
/// <summary>
|
|
/// 加载数据
|
|
/// </summary>
|
|
/// <param name="dataFileName">数据文件名</param>
|
|
/// <param name="DataLoaded">加载后处理程序</param>
|
|
public static IEnumerator LoadDataDictionary(string dataFileName, UnityAction DataLoaded = null)
|
|
{
|
|
string filename = CommonData.DataFullPath + dataFileName;
|
|
// Debug.Log(filename);
|
|
UnityWebRequest www = UnityWebRequest.Get(filename);
|
|
yield return www.SendWebRequest();
|
|
if (www.result == UnityWebRequest.Result.ConnectionError)
|
|
{
|
|
Debug.Log(www.error);
|
|
}
|
|
|
|
if (www.isDone)
|
|
{
|
|
string data = www.downloadHandler.text;
|
|
if (!string.IsNullOrEmpty(data))
|
|
{
|
|
if (DataDics != null)
|
|
{
|
|
DataDics.Clear();
|
|
}
|
|
|
|
//Debug.Log(filename + ":" + data);
|
|
DataDics = JsonTools.DicFromJson<string,T>(data);
|
|
}
|
|
if (DataLoaded != null)
|
|
{
|
|
DataLoaded();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载数据
|
|
/// </summary>
|
|
/// <param name="dataFileName">数据文件名</param>
|
|
/// <param name="DataLoaded">加载后处理程序</param>
|
|
public static IEnumerator LoadDataList(string dataFileName, UnityAction DataLoaded = null)
|
|
{
|
|
string filename = CommonData.DataFullPath + dataFileName;
|
|
// Debug.Log(filename);
|
|
UnityWebRequest www = UnityWebRequest.Get(filename);
|
|
yield return www.SendWebRequest();
|
|
if (www.result == UnityWebRequest.Result.ConnectionError)
|
|
{
|
|
Debug.Log(www.error);
|
|
}
|
|
|
|
if (www.isDone)
|
|
{
|
|
string data = www.downloadHandler.text;
|
|
|
|
if (!string.IsNullOrEmpty(data))
|
|
{
|
|
if (DataList != null)
|
|
{
|
|
DataList.Clear();
|
|
}
|
|
//Debug.Log(filename + ":" + data);
|
|
DataList = JsonTools.ListFromJson<T>(data);
|
|
|
|
//Dictionary<string, T> dt = new Dictionary<string, T>();
|
|
//foreach (var item in DataList)
|
|
//{
|
|
// if (item is Data)
|
|
// {
|
|
// dt.Add((item as Data).ObjectID, item);
|
|
// }
|
|
//}
|
|
// Debug.Log(JsonTools.DicToJson(dt));
|
|
|
|
if (DataLoaded != null)
|
|
{
|
|
DataLoaded();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载数据
|
|
/// </summary>
|
|
/// <param name="dataFileName">数据文件名</param>
|
|
/// <param name="DataLoaded">加载后处理程序</param>
|
|
public static IEnumerator ListToDic(string dataFileName)
|
|
{
|
|
string filename = CommonData.DataFullPath + dataFileName;
|
|
// Debug.Log(filename);
|
|
UnityWebRequest www = UnityWebRequest.Get(filename);
|
|
yield return www.SendWebRequest();
|
|
if (www.result == UnityWebRequest.Result.ConnectionError)
|
|
{
|
|
Debug.Log(www.error);
|
|
}
|
|
|
|
if (www.isDone)
|
|
{
|
|
string data = www.downloadHandler.text;
|
|
|
|
if (!string.IsNullOrEmpty(data))
|
|
{
|
|
List<T> DataList = JsonTools.ListFromJson<T>(data);
|
|
Dictionary<string, T> dt = new Dictionary<string, T>();
|
|
foreach (var item in DataList)
|
|
{
|
|
if (item is Data)
|
|
{
|
|
dt.Add((item as Data).ObjectID, item);
|
|
}
|
|
}
|
|
Debug.Log(JsonTools.DicToJson(dt));
|
|
}
|
|
}
|
|
}
|
|
}
|