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