Browse Source

添加Vector3字段和Vector2字段

master
coffee 5 months ago
parent
commit
a400221dbf
  1. BIN
      Assets/ExcelResolver/Excel/hero.xlsx
  2. 2
      Assets/ScriptableObject/Excel/Hero_1.asset
  3. 2
      Assets/ScriptableObject/Excel/Hero_2.asset
  4. 10
      Assets/Scripts/Generator/Excel/Hero.cs
  5. 10
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs
  6. 10
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs
  7. 6
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs
  8. 5
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs
  9. 2
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs
  10. 26
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs
  11. 3
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs.meta
  12. 31
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs
  13. 3
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs.meta
  14. 16
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs
  15. 8
      Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs
  16. 6
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs

BIN
Assets/ExcelResolver/Excel/hero.xlsx

Binary file not shown.

2
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}

2
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}

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

@ -48,5 +48,15 @@ namespace Tools.ExcelResolver
/// 移速
/// </summary>
public float speed;
/// <summary>
/// 位置
/// </summary>
public UnityEngine.Vector3 pos;
/// <summary>
/// 位置
/// </summary>
public UnityEngine.Vector2 ches;
}
}

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

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

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

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

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

26
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]));
}
}
}
}

3
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8530fa995a19447293fc42a0039cfd05
timeCreated: 1737300368

31
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]));
}
}
}
}

3
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 89de9bb14be34e109a1980caa0935411
timeCreated: 1737299142

16
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs

@ -37,15 +37,25 @@ namespace Tools.ExcelResolver.Editor
return values;
}
/// <summary>
/// 将TType转换为C#对象
/// </summary>
/// <param name="cell"></param>
/// <param name="type"></param>
/// <param name="className"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
/// <exception cref="Exception"></exception>
internal static object ConvertCellValue<T>(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}");
}
/// <summary>

8
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs

@ -14,15 +14,17 @@ namespace Tools.ExcelResolver.Editor
/// <returns></returns>
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<int>" => typeof(List<int>),
// "List<float>" => typeof(List<float>),
// "List<string>" => typeof(List<string>),

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

Loading…
Cancel
Save