119 lines
3.3 KiB
C#
119 lines
3.3 KiB
C#
using System.Collections.Generic;
|
|
using System.IO;
|
|
using MotionFramework;
|
|
using Newtonsoft.Json.Linq;
|
|
using UnityEngine;
|
|
|
|
namespace DefaultNamespace
|
|
{
|
|
public class DataConfigManager : ModuleSingleton<DataConfigManager>, IModule
|
|
{
|
|
private Dictionary<string, List<string>> toolsPackDict;
|
|
|
|
|
|
public void OnCreate(object createParam)
|
|
{
|
|
LoadConfig();
|
|
}
|
|
|
|
public void OnUpdate()
|
|
{
|
|
}
|
|
|
|
public void OnDestroy()
|
|
{
|
|
}
|
|
|
|
public void OnGUI()
|
|
{
|
|
|
|
}
|
|
|
|
public List<string> GetToolsPackData(string toolsName)
|
|
{
|
|
foreach (var v in toolsPackDict)
|
|
{
|
|
if (v.Key == toolsName)
|
|
{
|
|
if (v.Value.Count > 0)
|
|
{
|
|
return v.Value;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
|
|
private void LoadConfig()
|
|
{
|
|
string path = Application.streamingAssetsPath + "/DataConfig/ToolsPackData.json";
|
|
if (File.Exists(path))
|
|
{
|
|
string jsonContent = File.ReadAllText(path);
|
|
JObject jsonObj = JObject.Parse(jsonContent);
|
|
|
|
toolsPackDict = new Dictionary<string, List<string>>();
|
|
|
|
var tools = jsonObj["tools"] as JObject;
|
|
if (tools != null)
|
|
{
|
|
ParseTools(tools["models"] as JArray);
|
|
}
|
|
|
|
// Debug.Log("工具和子项:");
|
|
// foreach (var item in toolsDict)
|
|
// {
|
|
// Debug.Log($"{item.Key}:");
|
|
// foreach (var subItem in item.Value)
|
|
// {
|
|
// Debug.Log($" - {subItem}");
|
|
// }
|
|
// }
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
|
|
void ParseTools(JArray models)
|
|
{
|
|
foreach (var model in models)
|
|
{
|
|
if (model is JValue)
|
|
{
|
|
string modelName = model.ToString();
|
|
if (!toolsPackDict.ContainsKey(modelName))
|
|
{
|
|
toolsPackDict[modelName] = new List<string>();
|
|
}
|
|
}
|
|
else if (model is JObject subTool)
|
|
{
|
|
string subToolName = subTool["name"].ToString();
|
|
var subItems = subTool["models"] ?? subTool["items"];
|
|
List<string> subItemList = new List<string>();
|
|
if (subItems is JArray subArray)
|
|
{
|
|
foreach (var subItem in subArray)
|
|
{
|
|
subItemList.Add(subItem.ToString());
|
|
}
|
|
}
|
|
|
|
toolsPackDict[subToolName] = subItemList;
|
|
if (subItems is JArray)
|
|
{
|
|
continue;
|
|
}
|
|
ParseTools(subItems as JArray); // 递归解析子对象
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |