You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

99 lines
3.4 KiB

using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using Sirenix.Utilities;
using Sirenix.Utilities.Editor;
using Tools.Editor;
using UnityEditor;
using UnityEngine;
namespace Tools.ExcelResolver.Editor
{
public sealed partial class ExcelResolverEditorWindow : OdinEditorWindow
{
[SerializeField] private ExcelResolverEditorConfig excelResolverConfig;
[FoldoutGroup("Hide Setting"), LabelText("导表前是否清空Console")]
[SerializeField] private bool isClearConsole = true;
[MenuItem("\u272dExcelResolver\u272d/ExcelResolverEditorWindow")]
private static void OpenWindow()
{
var window = GetWindow<ExcelResolverEditorWindow>();
window.position = GUIHelper.GetEditorWindowRect().AlignCenter(800, 500);
window.titleContent = new GUIContent("ExcelResolverEditorWindow");
}
protected override void Initialize()
{
if (excelResolverConfig == null)
{
string[] assetGuids = AssetDatabase.FindAssets($"ExcelResolverEditorConfig t:ExcelResolverEditorConfig");
if (assetGuids.Length > 0)
{
string assetPath = AssetDatabase.GUIDToAssetPath(assetGuids[0]);
excelResolverConfig = AssetDatabase.LoadAssetAtPath<ExcelResolverEditorConfig>(assetPath);
}
else
{
excelResolverConfig = CreateInstance<ExcelResolverEditorConfig>();
AssetDatabase.CreateAsset(excelResolverConfig, "Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorConfig.asset");
AssetDatabase.SaveAssets();
}
}
}
[Button("删除所有生成的代码和SO", ButtonSizes.Gigantic, Icon = SdfIconType.ExclamationDiamond), GUIColor(1f, 0f, 0f)]
[ButtonGroup("Hide Setting/Button")]
private void DeleteAllScriptsAndSO()
{
if (EditorUtility.DisplayDialog("警告", "确定要删除所有生成的代码和SO吗?", "确定", "取消"))
{
DirectoryUtil.DeleteDirectory(excelResolverConfig.CodePathRoot);
DirectoryUtil.DeleteDirectory(excelResolverConfig.SOPathRoot);
excelResolverConfig.md5Dict.Clear();
AssetDatabase.Refresh();
}
}
[ButtonGroup("Hide Setting/Button")]
private void ClearMd5()
{
excelResolverConfig.md5Dict.Clear();
}
[OnInspectorGUI]
private void DrawGenerateButton()
{
GUILayout.FlexibleSpace(); // 把空白区域推向上方
}
[Button("导表", ButtonSizes.Gigantic)]
private void StartExportExcel()
{
Debug.Log("Before GC: " + System.GC.GetTotalMemory(false) + " bytes");
if (isClearConsole)
{
UnityEditorUtil.ClearConsole();
}
ReadExcel();
}
// [ButtonGroup("Generate")]
// private void GenerateSO() => WriteSOData();
protected override void OnDestroy()
{
base.OnDestroy();
foreach (var pair in classCodeDataDict)
{
pair.Value.Dispose();
}
classCodeDataDict.Clear();
ExcelResolverUtil.Dispose();
}
}
}