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
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(); |
|
} |
|
} |
|
} |