diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx
index ca6fb04..5fbf868 100644
Binary files a/Assets/ExcelResolver/Excel/hero.xlsx and b/Assets/ExcelResolver/Excel/hero.xlsx differ
diff --git a/Assets/ExcelResolver/Json.meta b/Assets/ExcelResolver/Json.meta
deleted file mode 100644
index 0a83683..0000000
--- a/Assets/ExcelResolver/Json.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4b8a2f5e75555654bb2bb7f8ebc41d49
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ScriptableObject/Excel/Hero_1.asset b/Assets/ScriptableObject/Excel/Hero_1.asset
index 02be0de..504a333 100644
--- a/Assets/ScriptableObject/Excel/Hero_1.asset
+++ b/Assets/ScriptableObject/Excel/Hero_1.asset
@@ -21,3 +21,4 @@ MonoBehaviour:
speed: 1.2
pos: {x: 0, y: 1, z: 4}
ches: {x: 0, y: 1}
+ attack_target: 01000000020000000300000004000000
diff --git a/Assets/ScriptableObject/Excel/Hero_2.asset b/Assets/ScriptableObject/Excel/Hero_2.asset
index 124729f..b734157 100644
--- a/Assets/ScriptableObject/Excel/Hero_2.asset
+++ b/Assets/ScriptableObject/Excel/Hero_2.asset
@@ -13,11 +13,11 @@ MonoBehaviour:
m_Name: Hero_2
m_EditorClassIdentifier:
id: 2
- name: "\u6218\u58EB"
+ name:
icon: hero_2
has: 1
hp: 150
- atk: 15
- speed: 1
- pos: {x: -5, y: 1, z: 5}
- ches: {x: -5, y: 1}
+ atk: 0
+ speed: 0
+ pos: {x: 0, y: 0, z: 0}
+ ches: {x: 0, y: 0}
diff --git a/Assets/Scripts/Generator/Excel/Hero.cs b/Assets/Scripts/Generator/Excel/Hero.cs
index 2617962..6e1f846 100644
--- a/Assets/Scripts/Generator/Excel/Hero.cs
+++ b/Assets/Scripts/Generator/Excel/Hero.cs
@@ -63,5 +63,10 @@ namespace Tools.ExcelResolver
/// 位置
///
public Vector2 ches;
+
+ ///
+ /// 攻击优先级
+ ///
+ public List attack_target;
}
}
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs
index 32298f1..a184271 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs
@@ -4,6 +4,8 @@ namespace Tools.ExcelResolver.Editor
{
internal class TBool : TType
{
+ internal override Type RealType => typeof(bool);
+ internal override object DefaultValue => false;
internal override string FieldWriteFormat => "System.Boolean";
internal override bool String2TType(string typeText)
@@ -11,8 +13,6 @@ namespace Tools.ExcelResolver.Editor
return string.Equals(typeText, "bool", StringComparison.OrdinalIgnoreCase);
}
- internal override Type RealType => typeof(bool);
-
internal override object TryParseFrom(string cellText)
{
if (bool.TryParse(cellText, out var result))
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs
index 315e7c6..e1ce7c7 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs
@@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor
internal class TFloat : TType
{
internal override string FieldWriteFormat => "System.Single";
+ internal override object DefaultValue => 0.0f;
internal override bool String2TType(string typeText)
{
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs
index a18d66b..aee0ca3 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs
@@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor
internal class TInt : TType
{
internal override string FieldWriteFormat => "System.Int32";
+ internal override object DefaultValue => 0;
internal override bool String2TType(string typeText)
{
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs
index 0dee360..18f3c74 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs
@@ -6,7 +6,8 @@ namespace Tools.ExcelResolver.Editor
internal class TList : TType
{
internal override string FieldWriteFormat => "List";
-
+ internal override object DefaultValue => new List();
+
internal override bool String2TType(string typeText)
{
var split = typeText.Split('|');
@@ -26,6 +27,24 @@ namespace Tools.ExcelResolver.Editor
internal override Type RealType => typeof(List);
internal override object TryParseFrom(string cellText)
{
+ var split = cellText.Split('|');
+ if (split.Length > 0)
+ {
+ var list = new List();
+ foreach (var s in split)
+ {
+ if (int.TryParse(s, out var result))
+ {
+ list.Add(result);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ return list;
+ }
return null;
}
}
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs
index 671d717..6596aa9 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs
@@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor
internal class TString : TType
{
internal override string FieldWriteFormat => "System.string";
+ internal override object DefaultValue => string.Empty;
internal override bool String2TType(string typeText)
{
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs
index 00c0668..a3dbb3b 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs
@@ -4,11 +4,13 @@ namespace Tools.ExcelResolver.Editor
{
internal abstract class TType
{
+ internal abstract Type RealType { get; }
+
+ internal abstract object DefaultValue { get; }
+
internal abstract string FieldWriteFormat { get; }
internal abstract bool String2TType(string typeText);
-
- internal abstract Type RealType { get; }
internal abstract object TryParseFrom(string cellText);
}
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs
index 758f139..d7301c3 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs
@@ -6,6 +6,7 @@ namespace Tools.ExcelResolver.Editor
internal class TVector2 : TType
{
internal override string FieldWriteFormat => "Vector2";
+ internal override object DefaultValue => Vector2.zero;
internal override bool String2TType(string typeText)
{
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs
index d969091..db4c77c 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs
@@ -6,6 +6,7 @@ namespace Tools.ExcelResolver.Editor
internal class TVector3 : TType
{
internal override string FieldWriteFormat => "Vector3";
+ internal override object DefaultValue => Vector3.zero;
internal override bool String2TType(string typeText)
{
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs
index 186de11..fca0594 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs
@@ -49,13 +49,22 @@ namespace Tools.ExcelResolver.Editor
internal static object ConvertCellValue(ExcelRange cell, T type, string className)
where T : TType
{
- var result = type.TryParseFrom(cell.Text);
+ object result;
+ if (string.IsNullOrEmpty(cell.Text)) // 如果单元格为空,则返回默认值
+ {
+ result = type.DefaultValue;
+ }
+ else
+ {
+ result = type.TryParseFrom(cell.Text);
+ }
+
if (result != null)
{
return result;
}
- throw new Exception($"单元格转换失败 FullAddress: {cell.FullAddress} Text: {cell.Text} className: {className}");
+ throw new Exception($"单元格转换失败 className: '{className}' FullAddress: {cell.FullAddress} Text: '{cell.Text}'");
}
///
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
index 44076cb..2b2547a 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs
@@ -60,8 +60,6 @@ namespace Tools.ExcelResolver.Editor
var fieldData = pair.Value;
var cell = worksheet.Cells[row, col];
- if (string.IsNullOrEmpty(cell.Text)) continue;
-
object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, fieldData.type, classCodeData.className);
FieldInfo fieldInfo = soType.GetField(fieldData.varName);
if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}");