using System.Collections.Generic; using System.IO; using MotionFramework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UnityEngine; namespace DefaultNamespace { public class DataConfigManager : ModuleSingleton, IModule { private string ToolsPackDataPath = Application.streamingAssetsPath + "/DataConfig/ToolsPackData.json"; //工具包 private string TeachingDataPath = Application.streamingAssetsPath + "/DataConfig/TeachingData.json"; //教学工具包设备高亮数据 private Dictionary> toolsPackDict; private List teachingData; [SerializeField] private ProcessMode.ProcessMode _processMode; public void OnCreate(object createParam) { LoadConfig(); // LoadTeachingData(); } public void OnUpdate() { } public void OnDestroy() { } public void OnGUI() { } public void SetProcessMode(int index) { if (index == 0)// 练习模式 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Practice; } else if (index == 1)// 考核模式 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Assessment; } else if (index == 2)// 教学模式 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Teaching; } else if (index == 3)// 培训模式 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Training; } Debug.Log("当前流程模式---->"+_processMode); } public ProcessMode.ProcessMode GetProcessMode() { return _processMode; } /// /// 获取教学工具包设备高亮数据 /// /// public List GetTeachingData() { return teachingData; } private void LoadTeachingData() { string jsonContent = File.ReadAllText(ToolsPackDataPath); teachingData = JsonConvert.DeserializeObject>(jsonContent); foreach (var tool in teachingData) { Debug.Log("Tool model: " + tool); } } private void LoadConfig() { if (File.Exists(ToolsPackDataPath)) { string jsonContent = File.ReadAllText(ToolsPackDataPath); JObject jsonObj = JObject.Parse(jsonContent); toolsPackDict = new Dictionary>(); 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 { } } public List 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; } 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(); } } else if (model is JObject subTool) { string subToolName = subTool["name"].ToString(); var subItems = subTool["models"] ?? subTool["items"]; List subItemList = new List(); 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); // 递归解析子对象 } } } } }