diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx index 01d332d..8e14bce 100644 Binary files a/Assets/ExcelResolver/Excel/hero.xlsx and b/Assets/ExcelResolver/Excel/hero.xlsx differ diff --git a/Assets/ScriptableObject/Excel/Hero_3.asset b/Assets/ScriptableObject/Excel/Hero_3.asset new file mode 100644 index 0000000..e3dbac6 --- /dev/null +++ b/Assets/ScriptableObject/Excel/Hero_3.asset @@ -0,0 +1,22 @@ +%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_3 + m_EditorClassIdentifier: + id: 2 + name: "\u5973\u5DEB" + icon: hero_3 + hp: 80 + atk: 8 + speed: 1.1 + pos: {x: 3, y: 2, z: 4} + ches: {x: 5, y: 12} diff --git a/Assets/ScriptableObject/Excel/Hero_3.asset.meta b/Assets/ScriptableObject/Excel/Hero_3.asset.meta new file mode 100644 index 0000000..9c78293 --- /dev/null +++ b/Assets/ScriptableObject/Excel/Hero_3.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 627fad9d9ab58274298938ce4db65b03 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: 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 1016604..2cf388c 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "bool"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(bool); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - if (bool.TryParse(s, out var result)) + if (bool.TryParse(cellText, out var result)) { return 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 a49730c..9ac8087 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "float"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(float); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - if (float.TryParse(s, out float result)) + if (float.TryParse(cellText, out float result)) { return result; } 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 7de3765..2d2859b 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "int"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(int); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - return int.TryParse(s, out var result) ? result : null; + return int.TryParse(cellText, out var result) ? result : null; } } } \ No newline at end of file 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 2c0c4f9..59161d0 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs @@ -6,8 +6,13 @@ namespace Tools.ExcelResolver.Editor internal class TList : TType { internal override string TypeName => "list"; + internal override bool String2TType(string typeText) + { + return false; + } + internal override Type RealType => typeof(List<>); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { 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 322a9eb..9ae9782 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "string"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(string); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - return s; + return cellText; } } } \ 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 65fc5ab..e37a1da 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs @@ -6,8 +6,10 @@ namespace Tools.ExcelResolver.Editor { internal abstract string TypeName { get; } + internal abstract bool String2TType(string typeText); + internal abstract Type RealType { get; } - internal abstract object TryParseFrom(string s); + internal abstract object TryParseFrom(string cellText); } } \ 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 index e1c705a..e672194 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs @@ -7,12 +7,17 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "vector2"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(Vector2); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - s = s[1..^1]; - var ss = s.Split(','); + cellText = cellText[1..^1]; + var ss = cellText.Split(','); if (ss.Length != 2) { return null; 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 24245c3..2e6b386 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs @@ -7,17 +7,22 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "vector3"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(Vector3); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - if (!s.StartsWith("(") || !s.EndsWith(")")) + if (!cellText.StartsWith("(") || !cellText.EndsWith(")")) { return null; } - s = s[1..^1]; - var ss = s.Split(','); + cellText = cellText[1..^1]; + var ss = cellText.Split(','); if (ss.Length != 3) { return null; 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 7e24c47..9fbdd0f 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 @@ -1,12 +1,22 @@ using System; -using System.Collections.Generic; using System.Linq; -using UnityEngine; +using System.Reflection; namespace Tools.ExcelResolver.Editor { internal static partial class ExcelResolverUtil { + private static TType[] _allTTypes; + + internal static TType[] GetAllTTypes() + { + return Assembly.GetAssembly(typeof(TType)) + .GetTypes() + .Where(t => t.IsSubclassOf(typeof(TType)) && !t.IsAbstract) + .Select(t => Activator.CreateInstance(t) as TType) + .ToArray(); + } + /// /// 更具类型字符串获取 TType /// @@ -14,7 +24,19 @@ namespace Tools.ExcelResolver.Editor /// internal static TType GetTTypeByString(string typeText) { + typeText = typeText.ToLower(); + _allTTypes ??= GetAllTTypes(); + + foreach (var tType in _allTTypes) + { + if (tType.String2TType(typeText)) + { + return tType; + } + } + + throw new Exception($"未找到类型 {typeText}"); return typeText switch {