diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs index 9da9323..841a32a 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using OfficeOpenXml; using UnityEditor; +using UnityEditor.Compilation; using UnityEngine; using UnityEngine.Assertions; @@ -10,7 +11,7 @@ namespace Tools.ExcelResolver.Editor { public sealed partial class ExcelResolverEditorWindow { - private void ReadExcel() + private void ReadExcel(bool needWrite = true) { classCodeDataDict = new Dictionary(); @@ -34,16 +35,46 @@ namespace Tools.ExcelResolver.Editor classCodeData.fields = GetFieldData(worksheet, classCodeData); classCodeData.tableType = CheckTableType(worksheet, classCodeData); - - WriteDataCode(classCodeData); - WriteSOCode(classCodeData); + if (needWrite) + { + WriteDataCode(classCodeData); + WriteSOCode(classCodeData); + } classCodeDataDict.Add(worksheet, classCodeData); // WriteSOData(worksheet, classCodeData); } + AssetDatabase.Refresh(); + if (EditorApplication.isCompiling) + { + CompilationPipeline.compilationFinished += CompilationFinished; + } + else + { + WriteSOData(); + } } - - private TableType CheckTableType(ExcelWorksheet worksheet, ClassCodeData classCodeData) + + private bool isCompilationFinished; + private void CompilationFinished(object obj) + { + CompilationPipeline.compilationFinished -= CompilationFinished; + Debug.Log("编译完成"); + isCompilationFinished = true; + } + + private void Update() + { + if (isCompilationFinished && System.AppDomain.CurrentDomain.GetAssemblies() + .Any(a => a.GetName().Name == "Assembly-CSharp")) + { + isCompilationFinished = false; + Debug.Log("Assembly-CSharp加载完成,开始写入SO数据"); + WriteSOData(); + } + } + + private static TableType CheckTableType(ExcelWorksheet worksheet, ClassCodeData classCodeData) { var tableType = TableType.SingleKeyTable; diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs index bf52485..44076cb 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Reflection; using OfficeOpenXml; +using Sirenix.OdinInspector; using UnityEditor; using UnityEngine; @@ -10,13 +10,14 @@ namespace Tools.ExcelResolver.Editor { public sealed partial class ExcelResolverEditorWindow { - private Dictionary classCodeDataDict; + [FoldoutGroup("Hide Setting")] + [ShowInInspector] private Dictionary classCodeDataDict; private void WriteSOData() { if (classCodeDataDict == null) { - ReadExcel(); + ReadExcel(false); } foreach (var classCodeDataDictPair in classCodeDataDict) diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs index e037eb8..853219e 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs @@ -49,11 +49,10 @@ namespace Tools.ExcelResolver.Editor } - [Button(ButtonSizes.Gigantic)] - [ButtonGroup("Generate")] - private void GenerateCode() => ReadExcel(); + [Button("导表", ButtonSizes.Gigantic)] + private void StartExportExcel() => ReadExcel(); - [ButtonGroup("Generate")] - private void GenerateSO() => WriteSOData(); + // [ButtonGroup("Generate")] + // private void GenerateSO() => WriteSOData(); } } \ No newline at end of file