Browse Source

使用一个按钮导表

master
coffee 5 months ago
parent
commit
03e6e4d0c1
  1. 37
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
  2. 7
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
  3. 9
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs

37
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs

@ -3,6 +3,7 @@ using System.IO;
using System.Linq; using System.Linq;
using OfficeOpenXml; using OfficeOpenXml;
using UnityEditor; using UnityEditor;
using UnityEditor.Compilation;
using UnityEngine; using UnityEngine;
using UnityEngine.Assertions; using UnityEngine.Assertions;
@ -10,7 +11,7 @@ namespace Tools.ExcelResolver.Editor
{ {
public sealed partial class ExcelResolverEditorWindow public sealed partial class ExcelResolverEditorWindow
{ {
private void ReadExcel() private void ReadExcel(bool needWrite = true)
{ {
classCodeDataDict = new Dictionary<ExcelWorksheet, ClassCodeData>(); classCodeDataDict = new Dictionary<ExcelWorksheet, ClassCodeData>();
@ -34,16 +35,46 @@ namespace Tools.ExcelResolver.Editor
classCodeData.fields = GetFieldData(worksheet, classCodeData); classCodeData.fields = GetFieldData(worksheet, classCodeData);
classCodeData.tableType = CheckTableType(worksheet, classCodeData); classCodeData.tableType = CheckTableType(worksheet, classCodeData);
if (needWrite)
{
WriteDataCode(classCodeData); WriteDataCode(classCodeData);
WriteSOCode(classCodeData); WriteSOCode(classCodeData);
}
classCodeDataDict.Add(worksheet, classCodeData); classCodeDataDict.Add(worksheet, classCodeData);
// WriteSOData(worksheet, classCodeData); // WriteSOData(worksheet, classCodeData);
} }
AssetDatabase.Refresh(); AssetDatabase.Refresh();
if (EditorApplication.isCompiling)
{
CompilationPipeline.compilationFinished += CompilationFinished;
}
else
{
WriteSOData();
}
}
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 TableType CheckTableType(ExcelWorksheet worksheet, ClassCodeData classCodeData) private static TableType CheckTableType(ExcelWorksheet worksheet, ClassCodeData classCodeData)
{ {
var tableType = TableType.SingleKeyTable; var tableType = TableType.SingleKeyTable;

7
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs

@ -1,8 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Reflection; using System.Reflection;
using OfficeOpenXml; using OfficeOpenXml;
using Sirenix.OdinInspector;
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
@ -10,13 +10,14 @@ namespace Tools.ExcelResolver.Editor
{ {
public sealed partial class ExcelResolverEditorWindow public sealed partial class ExcelResolverEditorWindow
{ {
private Dictionary<ExcelWorksheet, ClassCodeData> classCodeDataDict; [FoldoutGroup("Hide Setting")]
[ShowInInspector] private Dictionary<ExcelWorksheet, ClassCodeData> classCodeDataDict;
private void WriteSOData() private void WriteSOData()
{ {
if (classCodeDataDict == null) if (classCodeDataDict == null)
{ {
ReadExcel(); ReadExcel(false);
} }
foreach (var classCodeDataDictPair in classCodeDataDict) foreach (var classCodeDataDictPair in classCodeDataDict)

9
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs

@ -49,11 +49,10 @@ namespace Tools.ExcelResolver.Editor
} }
[Button(ButtonSizes.Gigantic)] [Button("导表", ButtonSizes.Gigantic)]
[ButtonGroup("Generate")] private void StartExportExcel() => ReadExcel();
private void GenerateCode() => ReadExcel();
[ButtonGroup("Generate")] // [ButtonGroup("Generate")]
private void GenerateSO() => WriteSOData(); // private void GenerateSO() => WriteSOData();
} }
} }
Loading…
Cancel
Save