diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx
index 4175e88..01d332d 100644
Binary files a/Assets/ExcelResolver/Excel/hero.xlsx and b/Assets/ExcelResolver/Excel/hero.xlsx differ
diff --git a/Assets/ScriptableObject/Excel/Hero_1.asset b/Assets/ScriptableObject/Excel/Hero_1.asset
index 098a652..168d7a2 100644
--- a/Assets/ScriptableObject/Excel/Hero_1.asset
+++ b/Assets/ScriptableObject/Excel/Hero_1.asset
@@ -18,3 +18,5 @@ MonoBehaviour:
hp: 100
atk: 20
speed: 1.2
+ pos: {x: 0, y: 1, z: 4}
+ ches: {x: 0, y: 1}
diff --git a/Assets/ScriptableObject/Excel/Hero_2.asset b/Assets/ScriptableObject/Excel/Hero_2.asset
index b2f797e..34540a2 100644
--- a/Assets/ScriptableObject/Excel/Hero_2.asset
+++ b/Assets/ScriptableObject/Excel/Hero_2.asset
@@ -18,3 +18,5 @@ MonoBehaviour:
hp: 150
atk: 15
speed: 1
+ pos: {x: -5, y: 1, z: 5}
+ ches: {x: -5, y: 1}
diff --git a/Assets/Scripts/Generator/Excel/Hero.cs b/Assets/Scripts/Generator/Excel/Hero.cs
index 68695bf..0f66105 100644
--- a/Assets/Scripts/Generator/Excel/Hero.cs
+++ b/Assets/Scripts/Generator/Excel/Hero.cs
@@ -48,5 +48,15 @@ namespace Tools.ExcelResolver
/// 移速
///
public float speed;
+
+ ///
+ /// 位置
+ ///
+ public UnityEngine.Vector3 pos;
+
+ ///
+ /// 位置
+ ///
+ public UnityEngine.Vector2 ches;
}
}
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 217a832..1016604 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs
@@ -8,15 +8,13 @@ namespace Tools.ExcelResolver.Editor
internal override Type RealType => typeof(bool);
- internal override bool TryParseFrom(string s, out object o)
+ internal override object TryParseFrom(string s)
{
- if (bool.TryParse(s, out var b))
+ if (bool.TryParse(s, out var result))
{
- o = b;
- return true;
+ return result;
}
- o = null;
- return false;
+ return null;
}
}
}
\ No newline at end of file
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 4fb3ba5..a49730c 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs
@@ -8,15 +8,13 @@ namespace Tools.ExcelResolver.Editor
internal override Type RealType => typeof(float);
- internal override bool TryParseFrom(string s, out object o)
+ internal override object TryParseFrom(string s)
{
- if (float.TryParse(s, out float f))
+ if (float.TryParse(s, out float result))
{
- o = f;
- return true;
+ return result;
}
- o = null;
- return false;
+ return null;
}
}
}
\ No newline at end of file
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 28fa533..7de3765 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs
@@ -8,11 +8,9 @@ namespace Tools.ExcelResolver.Editor
internal override Type RealType => typeof(int);
- internal override bool TryParseFrom(string s, out object o)
+ internal override object TryParseFrom(string s)
{
- var b = int.TryParse(s, out var i);
- o = i;
- return b;
+ return int.TryParse(s, out var result) ? result : null;
}
}
}
\ No newline at end of file
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 a20502f..322a9eb 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs
@@ -8,10 +8,9 @@ namespace Tools.ExcelResolver.Editor
internal override Type RealType => typeof(string);
- internal override bool TryParseFrom(string s, out object o)
+ internal override object TryParseFrom(string s)
{
- o = s;
- return true;
+ return s;
}
}
}
\ No newline at end of file
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 1972cb7..65fc5ab 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs
@@ -8,6 +8,6 @@ namespace Tools.ExcelResolver.Editor
internal abstract Type RealType { get; }
- internal abstract bool TryParseFrom(string s, out object o);
+ internal abstract object TryParseFrom(string s);
}
}
\ No newline at end of file
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs
new file mode 100644
index 0000000..f9123e7
--- /dev/null
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs
@@ -0,0 +1,26 @@
+using System;
+using UnityEngine;
+
+namespace Tools.ExcelResolver.Editor
+{
+ internal class TVector2 : TType
+ {
+ internal override string TypeName => "Vector2";
+
+ internal override Type RealType => typeof(Vector2);
+
+ internal override object TryParseFrom(string s)
+ {
+ s = s[1..^1];
+ var ss = s.Split(',');
+ if (ss.Length != 2)
+ {
+ return null;
+ }
+ else
+ {
+ return new Vector2(float.Parse(ss[0]), float.Parse(ss[1]));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs.meta b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs.meta
new file mode 100644
index 0000000..3d2d80d
--- /dev/null
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 8530fa995a19447293fc42a0039cfd05
+timeCreated: 1737300368
\ No newline at end of file
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs
new file mode 100644
index 0000000..6f59d35
--- /dev/null
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs
@@ -0,0 +1,31 @@
+using System;
+using UnityEngine;
+
+namespace Tools.ExcelResolver.Editor
+{
+ internal class TVector3 : TType
+ {
+ internal override string TypeName => "UnityEngine.Vector3";
+
+ internal override Type RealType => typeof(Vector3);
+
+ internal override object TryParseFrom(string s)
+ {
+ if (!s.StartsWith("(") || !s.EndsWith(")"))
+ {
+ return null;
+ }
+
+ s = s[1..^1];
+ var ss = s.Split(',');
+ if (ss.Length != 3)
+ {
+ return null;
+ }
+ else
+ {
+ return new Vector3(float.Parse(ss[0]), float.Parse(ss[1]), float.Parse(ss[2]));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs.meta b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs.meta
new file mode 100644
index 0000000..9c2ab92
--- /dev/null
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 89de9bb14be34e109a1980caa0935411
+timeCreated: 1737299142
\ No newline at end of file
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 e1642aa..186de11 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
@@ -37,15 +37,25 @@ namespace Tools.ExcelResolver.Editor
return values;
}
+ ///
+ /// 将TType转换为C#对象
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
internal static object ConvertCellValue(ExcelRange cell, T type, string className)
where T : TType
{
- if (type.TryParseFrom(cell.Text, out var value))
+ var result = type.TryParseFrom(cell.Text);
+ if (result != null)
{
- return value;
+ return result;
}
- throw new Exception($"单元格转换失败 FullAddress:'{cell.FullAddress}' Text:'{cell.Text}' className:'{className}'");
+ throw new Exception($"单元格转换失败 FullAddress: {cell.FullAddress} Text: {cell.Text} className: {className}");
}
///
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs
index ce1d314..7e24c47 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs
@@ -14,15 +14,17 @@ namespace Tools.ExcelResolver.Editor
///
internal static TType GetTTypeByString(string typeText)
{
+ typeText = typeText.ToLower();
+
return typeText switch
{
"int" => new TInt(),
"float" => new TFloat(),
"string" => new TString(),
"bool" => new TBool(),
- // "Vector2" => typeof(Vector2),
- // "Vector3" => typeof(Vector3),
- //
+ "vector2" => new TVector2(),
+ "vector3" => new TVector3(),
+
// "List" => typeof(List),
// "List" => typeof(List),
// "List" => typeof(List),
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
index 841a32a..54e1bc1 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
using OfficeOpenXml;
@@ -139,8 +140,7 @@ namespace Tools.ExcelResolver.Editor
{
if (fieldDatas.Values.Count(f => f.varName == fieldData.varName) > 1)
{
- Debug.LogError($"'{classCodeData.className}'拥有相同的字段: {fieldData.varName}");
- return null;
+ throw new Exception($"'{classCodeData.className}'拥有相同的字段: {fieldData.varName}");
}
}