Browse Source

如果已存在该SO文件,则改写,而不是重新创建

main
coffee 5 months ago
parent
commit
ae8f8f1216
  1. 47
      Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
  2. 8
      Assets/_Project/ScriptableObject/Excel/Hero.meta
  3. 2
      Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset
  4. 2
      Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset.meta
  5. 2
      Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset
  6. 2
      Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset.meta
  7. 2
      Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset
  8. 2
      Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset.meta

47
Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Reflection; using System.Reflection;
using OfficeOpenXml; using OfficeOpenXml;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
@ -27,27 +28,35 @@ namespace Tools.ExcelResolver.Editor
Debug.LogError($"Class '{classCodeData.className}SO' not found. Please generate classes first (or check namespace)."); Debug.LogError($"Class '{classCodeData.className}SO' not found. Please generate classes first (or check namespace).");
return; return;
} }
var path = $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}/";
// string fullPath = $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}SO.asset"; for (int row = 1; row <= worksheet.Dimension.End.Row; row++)
//
// 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++)
{ {
var assetName = $"{classCodeData.className}_{row}";
var fullPath = $"{path}{assetName}.asset";
// 跳过注释行 // 跳过注释行
if (worksheet.Cells[row, 1].Text == "##") continue; if (worksheet.Cells[row, 1].Text.StartsWith("##"))
{
ScriptableObject instance = ScriptableObject.CreateInstance(soType); if (File.Exists(fullPath))
{
AssetDatabase.DeleteAsset(fullPath);
Debug.LogError($"删除:{assetName}");
}
continue;
}
ScriptableObject instance;
if (File.Exists(fullPath))
{
instance = AssetDatabase.LoadAssetAtPath<ScriptableObject>(fullPath);
Debug.Log($"刷新:{assetName}", instance);
}
else
{
instance = ScriptableObject.CreateInstance(soType);
AssetDatabase.CreateAsset(instance, fullPath);
AssetDatabase.SaveAssets();
Debug.Log($"创建:{assetName}", instance);
}
foreach (var pair in classCodeData.fields) foreach (var pair in classCodeData.fields)
{ {
@ -60,7 +69,7 @@ namespace Tools.ExcelResolver.Editor
if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}"); if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}");
fieldInfo.SetValue(instance, convertedValue); fieldInfo.SetValue(instance, convertedValue);
} }
AssetDatabase.CreateAsset(instance, $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}_{row - 6}.asset"); EditorUtility.SetDirty(instance);
} }
AssetDatabase.SaveAssets(); AssetDatabase.SaveAssets();
} }

8
Assets/_Project/ScriptableObject/Excel/Hero.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 44b4794a46829ab458d412a9acd71eba
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

2
Assets/_Project/ScriptableObject/Excel/Hero_1.asset → Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset

@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3} m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3}
m_Name: Hero_1 m_Name: Hero_7
m_EditorClassIdentifier: m_EditorClassIdentifier:
serializationData: serializationData:
SerializedFormat: 2 SerializedFormat: 2

2
Assets/_Project/ScriptableObject/Excel/Hero_3.asset.meta → Assets/_Project/ScriptableObject/Excel/Hero/Hero_7.asset.meta

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 226d036514514d14c8566a97edac7c9e guid: 031f6bc6b7884a54da49033ea61073a7
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 11400000

2
Assets/_Project/ScriptableObject/Excel/Hero_2.asset → Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset

@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3} m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3}
m_Name: Hero_2 m_Name: Hero_8
m_EditorClassIdentifier: m_EditorClassIdentifier:
serializationData: serializationData:
SerializedFormat: 2 SerializedFormat: 2

2
Assets/_Project/ScriptableObject/Excel/Hero_1.asset.meta → Assets/_Project/ScriptableObject/Excel/Hero/Hero_8.asset.meta

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 4f581fc84b82a7f4da23f932e6ed3d38 guid: f68d13699cf81a14a8e10092094b0f8d
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 11400000

2
Assets/_Project/ScriptableObject/Excel/Hero_3.asset → Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset

@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3} m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3}
m_Name: Hero_3 m_Name: Hero_9
m_EditorClassIdentifier: m_EditorClassIdentifier:
serializationData: serializationData:
SerializedFormat: 2 SerializedFormat: 2

2
Assets/_Project/ScriptableObject/Excel/Hero_2.asset.meta → Assets/_Project/ScriptableObject/Excel/Hero/Hero_9.asset.meta

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7a59ffde55e89f148be41e4d40255f16 guid: acae57c5032fca54685e664fb60872d6
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 11400000
Loading…
Cancel
Save