diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx
index ffef32e..3e6d1a6 100644
Binary files a/Assets/ExcelResolver/Excel/hero.xlsx and b/Assets/ExcelResolver/Excel/hero.xlsx differ
diff --git a/Assets/ScriptableObject.meta b/Assets/ScriptableObject.meta
new file mode 100644
index 0000000..16b4a99
--- /dev/null
+++ b/Assets/ScriptableObject.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8c2556b969d8e2e4881be5e4e996dfcc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ScriptableObject/Generator.meta b/Assets/ScriptableObject/Generator.meta
new file mode 100644
index 0000000..c965f3e
--- /dev/null
+++ b/Assets/ScriptableObject/Generator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0640585ce4cc1ab43ad546d3258130dc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ScriptableObject/Generator/Excel.meta b/Assets/ScriptableObject/Generator/Excel.meta
new file mode 100644
index 0000000..f11a703
--- /dev/null
+++ b/Assets/ScriptableObject/Generator/Excel.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e67c6d5e54b9de94ab4e5d1865feb935
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ScriptableObject/Generator/Excel/Hero_1.asset b/Assets/ScriptableObject/Generator/Excel/Hero_1.asset
new file mode 100644
index 0000000..098a652
--- /dev/null
+++ b/Assets/ScriptableObject/Generator/Excel/Hero_1.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31296c0321326704c8614b265011bd90, type: 3}
+ m_Name: Hero_1
+ m_EditorClassIdentifier:
+ id: 1
+ name: "\u9053\u58EB"
+ icon: hero_1
+ hp: 100
+ atk: 20
+ speed: 1.2
diff --git a/Assets/ScriptableObject/Generator/Excel/Hero_1.asset.meta b/Assets/ScriptableObject/Generator/Excel/Hero_1.asset.meta
new file mode 100644
index 0000000..61bce23
--- /dev/null
+++ b/Assets/ScriptableObject/Generator/Excel/Hero_1.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5d9d9d9b6a4a85b468a248932c5ffc68
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ScriptableObject/Generator/Excel/Hero_2.asset b/Assets/ScriptableObject/Generator/Excel/Hero_2.asset
new file mode 100644
index 0000000..b2f797e
--- /dev/null
+++ b/Assets/ScriptableObject/Generator/Excel/Hero_2.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31296c0321326704c8614b265011bd90, type: 3}
+ m_Name: Hero_2
+ m_EditorClassIdentifier:
+ id: 2
+ name: "\u6218\u58EB"
+ icon: hero_2
+ hp: 150
+ atk: 15
+ speed: 1
diff --git a/Assets/ScriptableObject/Generator/Excel/Hero_2.asset.meta b/Assets/ScriptableObject/Generator/Excel/Hero_2.asset.meta
new file mode 100644
index 0000000..878b668
--- /dev/null
+++ b/Assets/ScriptableObject/Generator/Excel/Hero_2.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 20719aba661cd244f9d4e3b1f45a3e14
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Generator/Excel/Hero.cs b/Assets/Scripts/Generator/Excel/Hero.cs
new file mode 100644
index 0000000..68695bf
--- /dev/null
+++ b/Assets/Scripts/Generator/Excel/Hero.cs
@@ -0,0 +1,52 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Tools.ExcelResolver
+{
+ using System;
+ using System.Collections;
+ using System.Collections.Generic;
+ using UnityEngine;
+
+
+ public class Hero : ScriptableObject, IExcelData
+ {
+
+ ///
+ /// 英雄
+ ///
+ public int id;
+
+ ///
+ /// 名称
+ ///
+ public string name;
+
+ ///
+ /// icon
+ ///
+ public string icon;
+
+ ///
+ /// 血量
+ ///
+ public int hp;
+
+ ///
+ /// 攻击力
+ ///
+ public int atk;
+
+ ///
+ /// 移速
+ ///
+ public float speed;
+ }
+}
diff --git a/Assets/Scripts/Generator/Excel/Hero.cs.meta b/Assets/Scripts/Generator/Excel/Hero.cs.meta
new file mode 100644
index 0000000..3705732
--- /dev/null
+++ b/Assets/Scripts/Generator/Excel/Hero.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 31296c0321326704c8614b265011bd90
\ No newline at end of file
diff --git a/Assets/Scripts/Generator/Excel/HeroUtil.cs b/Assets/Scripts/Generator/Excel/HeroUtil.cs
new file mode 100644
index 0000000..052db47
--- /dev/null
+++ b/Assets/Scripts/Generator/Excel/HeroUtil.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Tools.ExcelResolver
+{
+ using System;
+ using System.Collections;
+ using System.Collections.Generic;
+ using UnityEngine;
+ using Sirenix.OdinInspector;
+
+
+ public class HeroUtil : SerializedScriptableObject, IExcelSO
+ {
+
+ public Dictionary Data;
+ }
+}
diff --git a/Assets/Scripts/Generator/Excel/HeroUtil.cs.meta b/Assets/Scripts/Generator/Excel/HeroUtil.cs.meta
new file mode 100644
index 0000000..4c6cc39
--- /dev/null
+++ b/Assets/Scripts/Generator/Excel/HeroUtil.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: f75077205d2ee5349b19af6333dc2e66
\ No newline at end of file
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
index d84db69..e2c4252 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using OfficeOpenXml;
+using UnityEditor;
using UnityEngine;
namespace Tools.ExcelResolver.Editor
@@ -12,6 +14,11 @@ namespace Tools.ExcelResolver.Editor
private void WriteSOData()
{
+ if (classCodeDataDict == null)
+ {
+ ReadExcel();
+ }
+
foreach (var data in classCodeDataDict)
{
var worksheet = data.Key;
@@ -46,14 +53,19 @@ namespace Tools.ExcelResolver.Editor
ScriptableObject instance = ScriptableObject.CreateInstance(soType);
- for (int col = 2; col < classCodeData.fields.Keys.Max(); col++)
+ for (int col = 2; col <= classCodeData.fields.Keys.Max(); col++)
{
var cell = worksheet.Cells[row, col];
if (string.IsNullOrEmpty(cell.Text)) continue;
object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, classCodeData.fields[col].type, classCodeData.className);
+ FieldInfo fieldInfo = soType.GetField(classCodeData.fields[col].varName);
+ if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{classCodeData.fields[col].varName}");
+ fieldInfo.SetValue(instance, convertedValue);
}
+ AssetDatabase.CreateAsset(instance, $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}_{row - 6}.asset");
}
+ AssetDatabase.SaveAssets();
}
}
}