diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx
index 5fbf868..6c281b5 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 504a333..abff05d 100644
--- a/Assets/ScriptableObject/Excel/Hero_1.asset
+++ b/Assets/ScriptableObject/Excel/Hero_1.asset
@@ -21,4 +21,8 @@ MonoBehaviour:
speed: 1.2
pos: {x: 0, y: 1, z: 4}
ches: {x: 0, y: 1}
- attack_target: 01000000020000000300000004000000
+ attack_target:
+ - 0.5
+ - -2.6
+ - 3
+ - 4.5
diff --git a/Assets/ScriptableObject/Excel/Hero_2.asset b/Assets/ScriptableObject/Excel/Hero_2.asset
index 462723a..2b3f899 100644
--- a/Assets/ScriptableObject/Excel/Hero_2.asset
+++ b/Assets/ScriptableObject/Excel/Hero_2.asset
@@ -21,4 +21,4 @@ MonoBehaviour:
speed: 0
pos: {x: 0, y: 0, z: 0}
ches: {x: 0, y: 0}
- attack_target:
+ attack_target: []
diff --git a/Assets/ScriptableObject/Excel/Hero_3.asset b/Assets/ScriptableObject/Excel/Hero_3.asset
index e59e65f..44da247 100644
--- a/Assets/ScriptableObject/Excel/Hero_3.asset
+++ b/Assets/ScriptableObject/Excel/Hero_3.asset
@@ -21,4 +21,5 @@ MonoBehaviour:
speed: 1.1
pos: {x: 3, y: 2, z: 4}
ches: {x: 5, y: 12}
- attack_target: 02000000
+ attack_target:
+ - 2.5
diff --git a/Assets/Scripts/Generator/Excel/Hero.cs b/Assets/Scripts/Generator/Excel/Hero.cs
index 6e1f846..55fead2 100644
--- a/Assets/Scripts/Generator/Excel/Hero.cs
+++ b/Assets/Scripts/Generator/Excel/Hero.cs
@@ -67,6 +67,6 @@ namespace Tools.ExcelResolver
///
/// 攻击优先级
///
- public List attack_target;
+ public List attack_target;
}
}
diff --git a/Assets/Scripts/Test.cs b/Assets/Scripts/Test.cs
new file mode 100644
index 0000000..faa96b1
--- /dev/null
+++ b/Assets/Scripts/Test.cs
@@ -0,0 +1,13 @@
+using System;
+using Tools.ExcelResolver;
+using UnityEngine;
+
+public class Test : MonoBehaviour
+{
+ public Hero hero;
+
+ private void Start()
+ {
+ var a = hero.speed;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Test.cs.meta b/Assets/Scripts/Test.cs.meta
new file mode 100644
index 0000000..293a04e
--- /dev/null
+++ b/Assets/Scripts/Test.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: aec833e1dd444669b614d6c2222c59b6
+timeCreated: 1737794427
\ 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 753de1b..fe644d4 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs
@@ -1,28 +1,28 @@
using System;
+using System.Collections;
using System.Collections.Generic;
namespace Tools.ExcelResolver.Editor
{
internal class TList : TType
{
- internal override Type RealType => typeof(List);
- internal override string FieldWriteFormat => "List";
- internal override object DefaultValue => new List();
+ internal override Type RealType => typeof(List<>).MakeGenericType(InnerType.RealType);
+ internal override string FieldWriteFormat => $"List<{InnerType.RealType.Name}>";
+ internal override object DefaultValue => Activator.CreateInstance(typeof(List<>).MakeGenericType(InnerType.RealType));
+
+ internal TType InnerType { get; set; }
internal override bool String2TType(string typeText)
{
- var split = typeText.Split('|');
- if (split.Length != 2)
+ var split = typeText.Split(',');
+ if (split.Length < 2 || !string.Equals(split[0], "list", StringComparison.OrdinalIgnoreCase))
{
return false;
}
- if (!string.Equals(split[0], "list", StringComparison.OrdinalIgnoreCase) || !string.Equals(split[1], "int", StringComparison.OrdinalIgnoreCase))
- {
- return false;
- }
+ InnerType = ExcelResolverUtil.GetTTypeByString(split[1]);
- return true;
+ return InnerType != null;
}
internal override object TryParseFrom(string cellText)
@@ -30,16 +30,17 @@ namespace Tools.ExcelResolver.Editor
var split = cellText.Split('|');
if (split.Length > 0)
{
- var list = new List();
+ var list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(InnerType.RealType));
foreach (var s in split)
{
- if (int.TryParse(s, out var result))
+ var parsedValue = InnerType.TryParseFrom(s);
+ if (parsedValue != null)
{
- list.Add(result);
+ list.Add(parsedValue);
}
else
{
- return null;
+ return null; // 任意一个解析失败则返回null
}
}