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