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}"); } }