From 6d064fbab0c128c46eb3884624694db6c311589b Mon Sep 17 00:00:00 2001 From: m0_75251201 Date: Thu, 10 Jul 2025 22:36:02 +0800 Subject: [PATCH] =?UTF-8?q?(client)=20chore:=E5=B0=86DefineManager?= =?UTF-8?q?=E7=9A=84=E8=8E=B7=E5=8F=96=E8=B7=AF=E5=BE=84=E4=B8=8Bxml?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E5=8A=9F=E8=83=BD=E7=A7=BB=E6=A4=8D?= =?UTF-8?q?=E5=88=B0fileHander?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client/Assets/Scripts/Data/DefineManager.cs | 48 ++++++------------- .../Assets/Scripts/Data/DefineSourceData.cs | 12 +++++ .../Scripts/Data/DefineSourceData.cs.meta | 3 ++ Client/Assets/Scripts/Utils/FileHandler.cs | 42 ++++++++++++++++ 4 files changed, 71 insertions(+), 34 deletions(-) create mode 100644 Client/Assets/Scripts/Data/DefineSourceData.cs create mode 100644 Client/Assets/Scripts/Data/DefineSourceData.cs.meta diff --git a/Client/Assets/Scripts/Data/DefineManager.cs b/Client/Assets/Scripts/Data/DefineManager.cs index 809dff7..3e26eb7 100644 --- a/Client/Assets/Scripts/Data/DefineManager.cs +++ b/Client/Assets/Scripts/Data/DefineManager.cs @@ -4,10 +4,11 @@ using System.IO; using System.Reflection; using System.Xml.Linq; using UnityEngine; +using Utils; namespace Data { - public class InitResource:Utils.Singleton + public class DefineManager:Utils.Singleton { static readonly string[] dataSetFilePath = { "Data", "Mod" }; @@ -17,35 +18,13 @@ namespace Data public void Init() { - foreach (var path in dataSetFilePath) - { - // 获取程序所在的目录路径 - var appDirectory = AppDomain.CurrentDomain.BaseDirectory; + // 加载所有 XML 文件路径 + var xmlFilePaths = FileHandler.LoadXmlFilesFromPaths(dataSetFilePath); - // 构建Data目录的完整路径 - var dataDirectory = Path.Combine(appDirectory, path); - try - { - // 检查目录是否存在 - if (Directory.Exists(dataDirectory)) - { - // 获取目录下的所有子文件夹 - var subDirectories = Directory.GetDirectories(dataDirectory); - // 遍历并输出每个子文件夹的名称 - foreach (var dir in subDirectories) - { - var xmlFiles = Directory.GetFiles(dir, "*.xml", SearchOption.AllDirectories); - foreach (var xmlFile in xmlFiles) - { - LoadXmlData(xmlFile); - } - } - } - } - catch (Exception ex) - { - Debug.LogError($"发生错误: {ex.Message}"); - } + // 遍历并加载每个 XML 文件 + foreach (var xmlFilePath in xmlFilePaths) + { + LoadXmlData(xmlFilePath); } } @@ -57,9 +36,9 @@ namespace Data Debug.LogWarning($"XML文件不存在: {xmlFilePath}"); return; } - XDocument xdoc = XDocument.Load(xmlFilePath); + var xdoc = XDocument.Load(xmlFilePath); // 解析Define节点 - XElement rootElement = xdoc.Root; + var rootElement = xdoc.Root; if (rootElement != null) { @@ -168,8 +147,8 @@ namespace Data public static void SetField(object obj, string fieldName, object value) { - Type type = obj.GetType(); - FieldInfo field = type.GetField(fieldName); + var type = obj.GetType(); + var field = type.GetField(fieldName); if (field != null) { @@ -177,8 +156,9 @@ namespace Data } else { - Console.WriteLine($"Field '{fieldName}' not found."); + Debug.LogWarning($"Field '{fieldName}' not found."); } } } + } \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/DefineSourceData.cs b/Client/Assets/Scripts/Data/DefineSourceData.cs new file mode 100644 index 0000000..233d3f0 --- /dev/null +++ b/Client/Assets/Scripts/Data/DefineSourceData.cs @@ -0,0 +1,12 @@ +namespace Data +{ + public class DefineSourceData + { + public string className; + public string defName; + public string label; + public string discription; + + + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/DefineSourceData.cs.meta b/Client/Assets/Scripts/Data/DefineSourceData.cs.meta new file mode 100644 index 0000000..755776d --- /dev/null +++ b/Client/Assets/Scripts/Data/DefineSourceData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e7aa794debf245aa82e09f42b92c9b52 +timeCreated: 1752156768 \ No newline at end of file diff --git a/Client/Assets/Scripts/Utils/FileHandler.cs b/Client/Assets/Scripts/Utils/FileHandler.cs index 2cf5914..3e97b41 100644 --- a/Client/Assets/Scripts/Utils/FileHandler.cs +++ b/Client/Assets/Scripts/Utils/FileHandler.cs @@ -152,6 +152,48 @@ namespace Utils return null; } } + + /// + /// 获取指定路径下的所有xml文件 + /// + /// 文件夹路径 + /// + public static List LoadXmlFilesFromPaths(string[] paths) + { + var xmlFilePaths = new List(); + + foreach (var path in paths) + { + // 获取程序所在的目录路径 + var appDirectory = AppDomain.CurrentDomain.BaseDirectory; + + // 构建目标目录的完整路径 + var dataDirectory = Path.Combine(appDirectory, path); + + try + { + // 检查目录是否存在 + if (Directory.Exists(dataDirectory)) + { + // 获取目录下的所有子文件夹 + var subDirectories = Directory.GetDirectories(dataDirectory); + + // 遍历并收集每个子文件夹中的 XML 文件 + foreach (var dir in subDirectories) + { + var xmlFiles = Directory.GetFiles(dir, "*.xml", SearchOption.AllDirectories); + xmlFilePaths.AddRange(xmlFiles); + } + } + } + catch (Exception ex) + { + Debug.LogError($"加载文件时发生错误: {ex.Message}"); + } + } + + return xmlFilePaths; + } } } \ No newline at end of file