Browse Source

使用一个按钮导表

master
coffee 5 months ago
parent
commit
03e6e4d0c1
  1. 41
      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

41
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<ExcelWorksheet, ClassCodeData>();
@ -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 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;

7
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<ExcelWorksheet, ClassCodeData> classCodeDataDict;
[FoldoutGroup("Hide Setting")]
[ShowInInspector] private Dictionary<ExcelWorksheet, ClassCodeData> classCodeDataDict;
private void WriteSOData()
{
if (classCodeDataDict == null)
{
ReadExcel();
ReadExcel(false);
}
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)]
[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();
}
}
Loading…
Cancel
Save