From 183953eb63f18d74798be7eba17edf3909c54d78 Mon Sep 17 00:00:00 2001 From: coffee <985942825@qq.com> Date: Sun, 19 Jan 2025 17:54:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4C#=E8=84=9A=E6=9C=AC=E5=92=8C?= =?UTF-8?q?SO=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Unity-Tools/Core/Editor/DirectoryUtil.cs | 15 +++++++++++++++ .../Editor/ExcelResolverEditorConfig.cs | 6 ------ .../Editor/ExcelResolverEditorWindow.cs | 19 ++++++++++++++++--- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs b/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs index 2106e4b..ab75fa4 100644 --- a/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs +++ b/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs @@ -64,5 +64,20 @@ namespace Tools.Editor var endIndex = Mathf.Max(endIndex1, endIndex2); return path[..endIndex]; } + + /// + /// 删除目录下所有子目录和文件。 + /// + /// + /// + public static bool DeleteDirectory(string path) + { + if (!Directory.Exists(path)) + { + return false; + } + Directory.Delete(path, true); + return true; + } } } \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs index 797595e..0387d8a 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs @@ -5,13 +5,10 @@ using UnityEngine; namespace Tools.ExcelResolver.Editor { [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] - // [CreateAssetMenu(fileName = "ExcelResolverEditorConfig", menuName = "ExcelResolver/ExcelResolverEditorConfig")] public sealed class ExcelResolverEditorConfig : ScriptableObject { [LabelText("Excel路径"), FolderPath] public string ExcelPathRoot = "Assets/ExcelResolver/Excel"; - [LabelText("Json路径"), ValueDropdown("@Tools.Editor.DirectoryUtil.GetFilePaths()")] - public string JsonPathRoot = "Assets/ExcelResolver/Json"; [LabelText("C#代码路径"), ValueDropdown("@Tools.Editor.DirectoryUtil.GetFilePaths()")] public string CodePathRoot = "Assets/Scripts/Generator/Excel"; [LabelText("SO存放路径"), ValueDropdown("@Tools.Editor.DirectoryUtil.GetFilePaths()")] @@ -19,12 +16,9 @@ namespace Tools.ExcelResolver.Editor [LabelText("生成代码命名空间")] public string GenerateDataClassNameSpace = "Tools.ExcelResolver"; - [HideInInspector] public bool isInit; - public void MakeSureDirectory() { DirectoryUtil.MakeSureDirectory(ExcelPathRoot); - DirectoryUtil.MakeSureDirectory(JsonPathRoot); DirectoryUtil.MakeSureDirectory(SOPathRoot); DirectoryUtil.MakeSureDirectory(CodePathRoot); } diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs index 02cf706..e037eb8 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs @@ -1,8 +1,8 @@ -using System; using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; using Sirenix.Utilities; using Sirenix.Utilities.Editor; +using Tools.Editor; using UnityEditor; using UnityEngine; @@ -30,6 +30,18 @@ namespace Tools.ExcelResolver.Editor } } + [FoldoutGroup("Hide Setting")] + [Button(SdfIconType.ExclamationDiamond, "删除所有生成的代码和SO"), GUIColor(1f, 0f, 0f)] + public void DeleteAllScriptsAndSO() + { + if (EditorUtility.DisplayDialog("警告", "确定要删除所有生成的代码和SO吗?", "确定", "取消")) + { + DirectoryUtil.DeleteDirectory(excelResolverConfig.CodePathRoot); + DirectoryUtil.DeleteDirectory(excelResolverConfig.SOPathRoot); + AssetDatabase.Refresh(); + } + } + [OnInspectorGUI] private void DrawGenerateButton() { @@ -37,10 +49,11 @@ namespace Tools.ExcelResolver.Editor } - [Button(ButtonSizes.Gigantic), HorizontalGroup("Split", 0.5f)] + [Button(ButtonSizes.Gigantic)] + [ButtonGroup("Generate")] private void GenerateCode() => ReadExcel(); - [Button(ButtonSizes.Gigantic), HorizontalGroup("Split", 0.5f)] + [ButtonGroup("Generate")] private void GenerateSO() => WriteSOData(); } } \ No newline at end of file