Browse Source

List泛型实现

master
coffee 5 months ago
parent
commit
9ce088b12f
  1. BIN
      Assets/ExcelResolver/Excel/hero.xlsx
  2. 6
      Assets/ScriptableObject/Excel/Hero_1.asset
  3. 2
      Assets/ScriptableObject/Excel/Hero_2.asset
  4. 3
      Assets/ScriptableObject/Excel/Hero_3.asset
  5. 2
      Assets/Scripts/Generator/Excel/Hero.cs
  6. 13
      Assets/Scripts/Test.cs
  7. 3
      Assets/Scripts/Test.cs.meta
  8. 29
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs

BIN
Assets/ExcelResolver/Excel/hero.xlsx

Binary file not shown.

6
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

2
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: []

3
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

2
Assets/Scripts/Generator/Excel/Hero.cs

@ -67,6 +67,6 @@ namespace Tools.ExcelResolver
/// <summary>
/// 攻击优先级
/// </summary>
public List<int> attack_target;
public List<Single> attack_target;
}
}

13
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;
}
}

3
Assets/Scripts/Test.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: aec833e1dd444669b614d6c2222c59b6
timeCreated: 1737794427

29
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<int>);
internal override string FieldWriteFormat => "List<int>";
internal override object DefaultValue => new List<int>();
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<int>();
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
}
}

Loading…
Cancel
Save