Files
TaiWan/Assets/Roaming/Scripts/Loader/DataLoader.cs

140 lines
4.0 KiB
C#
Raw Normal View History

2025-10-31 15:20:38 +08:00
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Networking;
/// <summary>
/// <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></typeparam>
public class DataLoader<T>
{
/// <summary>
/// <20><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD>б<EFBFBD>
/// </summary>
public static List<T> DataList;
public static Dictionary<string, T> DataDics;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="dataFileName"><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD></param>
/// <param name="DataLoaded"><3E><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></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>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="dataFileName"><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD></param>
/// <param name="DataLoaded"><3E><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></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>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="dataFileName"><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD></param>
/// <param name="DataLoaded"><3E><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></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));
}
}
}
}