From ae8f8f12164f6cef18687e13c3f2cff5dfac6ee7 Mon Sep 17 00:00:00 2001 From: coffee <985942825@qq.com> Date: Sun, 26 Jan 2025 03:26:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A6=82=E6=9E=9C=E5=B7=B2=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E8=AF=A5SO=E6=96=87=E4=BB=B6=EF=BC=8C=E5=88=99=E6=94=B9?= =?UTF-8?q?=E5=86=99=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExcelResolverEditorWindow.WriteSOData.cs | 47 +++++++++++-------- .../_Project/ScriptableObject/Excel/Hero.meta | 8 ++++ .../Excel/{Hero_1.asset => Hero/Hero_7.asset} | 2 +- .../Hero_7.asset.meta} | 2 +- .../Excel/{Hero_2.asset => Hero/Hero_8.asset} | 2 +- .../Hero_8.asset.meta} | 2 +- .../Excel/{Hero_3.asset => Hero/Hero_9.asset} | 2 +- .../Hero_9.asset.meta} | 2 +- 8 files changed, 42 insertions(+), 25 deletions(-) create mode 100644 Assets/_Project/ScriptableObject/Excel/Hero.meta rename Assets/_Project/ScriptableObject/Excel/{Hero_1.asset => Hero/Hero_7.asset} (99%) rename Assets/_Project/ScriptableObject/Excel/{Hero_3.asset.meta => Hero/Hero_7.asset.meta} (79%) rename Assets/_Project/ScriptableObject/Excel/{Hero_2.asset => Hero/Hero_8.asset} (99%) rename Assets/_Project/ScriptableObject/Excel/{Hero_1.asset.meta => Hero/Hero_8.asset.meta} (79%) rename Assets/_Project/ScriptableObject/Excel/{Hero_3.asset => Hero/Hero_9.asset} (99%) rename Assets/_Project/ScriptableObject/Excel/{Hero_2.asset.meta => Hero/Hero_9.asset.meta} (79%) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs b/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs index b641564..b2bf980 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Reflection; using OfficeOpenXml; using Sirenix.OdinInspector; @@ -27,28 +28,36 @@ namespace Tools.ExcelResolver.Editor Debug.LogError($"Class '{classCodeData.className}SO' not found. Please generate classes first (or check namespace)."); return; } + var path = $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}/"; - // string fullPath = $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}SO.asset"; - // - // if (File.Exists(fullPath)) - // { - // Debug.Log("已存在SO文件,无需创建"); - // - // } - // else - // { - // instance = ScriptableObject.CreateInstance(soType); - // AssetDatabase.CreateAsset(instance, $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}SO.asset"); - // AssetDatabase.SaveAssets(); - // } - - for (int row = 7; row <= worksheet.Dimension.End.Row; row++) + for (int row = 1; row <= worksheet.Dimension.End.Row; row++) { + var assetName = $"{classCodeData.className}_{row}"; + var fullPath = $"{path}{assetName}.asset"; // 跳过注释行 - if (worksheet.Cells[row, 1].Text == "##") continue; + if (worksheet.Cells[row, 1].Text.StartsWith("##")) + { + if (File.Exists(fullPath)) + { + AssetDatabase.DeleteAsset(fullPath); + Debug.LogError($"删除:{assetName}"); + } + continue; + } + ScriptableObject instance; + if (File.Exists(fullPath)) + { + instance = AssetDatabase.LoadAssetAtPath(fullPath); + Debug.Log($"刷新:{assetName}", instance); + } + else + { + instance = ScriptableObject.CreateInstance(soType); + AssetDatabase.CreateAsset(instance, fullPath); + AssetDatabase.SaveAssets(); + Debug.Log($"创建:{assetName}", instance); + } - ScriptableObject instance = ScriptableObject.CreateInstance(soType); - foreach (var pair in classCodeData.fields) { var col = pair.Key; @@ -60,7 +69,7 @@ namespace Tools.ExcelResolver.Editor if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}"); fieldInfo.SetValue(instance, convertedValue); } - AssetDatabase.CreateAsset(instance, $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}_{row - 6}.asset"); + EditorUtility.SetDirty(instance); } AssetDatabase.SaveAssets(); } diff --git a/Assets/_Project/ScriptableObject/Excel/Hero.meta b/Assets/_Project/ScriptableObject/Excel/Hero.meta new file mode 100644 index 0000000..5c7854d --- /dev/null +++ b/Assets/_Project/ScriptableObject/Excel/Hero.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44b4794a46829ab458d412a9acd71eba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/ScriptableObject/Excel/Hero_1.asset b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset similarity index 99% rename from Assets/_Project/ScriptableObject/Excel/Hero_1.asset rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset index ec8f7f8..1f40745 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero_1.asset +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3} - m_Name: Hero_1 + m_Name: Hero_7 m_EditorClassIdentifier: serializationData: SerializedFormat: 2 diff --git a/Assets/_Project/ScriptableObject/Excel/Hero_3.asset.meta b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset.meta similarity index 79% rename from Assets/_Project/ScriptableObject/Excel/Hero_3.asset.meta rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset.meta index ce38eff..7ed5095 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero_3.asset.meta +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 226d036514514d14c8566a97edac7c9e +guid: 031f6bc6b7884a54da49033ea61073a7 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/_Project/ScriptableObject/Excel/Hero_2.asset b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset similarity index 99% rename from Assets/_Project/ScriptableObject/Excel/Hero_2.asset rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset index a305662..e21dc37 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero_2.asset +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3} - m_Name: Hero_2 + m_Name: Hero_8 m_EditorClassIdentifier: serializationData: SerializedFormat: 2 diff --git a/Assets/_Project/ScriptableObject/Excel/Hero_1.asset.meta b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset.meta similarity index 79% rename from Assets/_Project/ScriptableObject/Excel/Hero_1.asset.meta rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset.meta index 2894836..214565e 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero_1.asset.meta +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4f581fc84b82a7f4da23f932e6ed3d38 +guid: f68d13699cf81a14a8e10092094b0f8d NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/_Project/ScriptableObject/Excel/Hero_3.asset b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset similarity index 99% rename from Assets/_Project/ScriptableObject/Excel/Hero_3.asset rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset index d6858ac..db27787 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero_3.asset +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3} - m_Name: Hero_3 + m_Name: Hero_9 m_EditorClassIdentifier: serializationData: SerializedFormat: 2 diff --git a/Assets/_Project/ScriptableObject/Excel/Hero_2.asset.meta b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset.meta similarity index 79% rename from Assets/_Project/ScriptableObject/Excel/Hero_2.asset.meta rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset.meta index e73dbfd..329f449 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero_2.asset.meta +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7a59ffde55e89f148be41e4d40255f16 +guid: acae57c5032fca54685e664fb60872d6 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000