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
{