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 hp: 100
atk: 20 atk: 20
speed: 1.2 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 hp: 150
atk: 15 atk: 15
speed: 1 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> /// </summary>
public float speed; 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 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 result;
return true;
} }
o = null; return null;
return false;
} }
} }
} }

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 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 result;
return true;
} }
o = null; return null;
return false;
} }
} }
} }

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 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); return int.TryParse(s, out var result) ? result : null;
o = i;
return b;
} }
} }
} }

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 Type RealType => typeof(string);
internal override bool TryParseFrom(string s, out object o) internal override object TryParseFrom(string s)
{ {
o = s; return s;
return true;
} }
} }
} }

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 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; 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) internal static object ConvertCellValue<T>(ExcelRange cell, T type, string className)
where T : TType 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> /// <summary>

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

@ -14,15 +14,17 @@ namespace Tools.ExcelResolver.Editor
/// <returns></returns> /// <returns></returns>
internal static TType GetTTypeByString(string typeText) internal static TType GetTTypeByString(string typeText)
{ {
typeText = typeText.ToLower();
return typeText switch return typeText switch
{ {
"int" => new TInt(), "int" => new TInt(),
"float" => new TFloat(), "float" => new TFloat(),
"string" => new TString(), "string" => new TString(),
"bool" => new TBool(), "bool" => new TBool(),
// "Vector2" => typeof(Vector2), "vector2" => new TVector2(),
// "Vector3" => typeof(Vector3), "vector3" => new TVector3(),
//
// "List<int>" => typeof(List<int>), // "List<int>" => typeof(List<int>),
// "List<float>" => typeof(List<float>), // "List<float>" => typeof(List<float>),
// "List<string>" => typeof(List<string>), // "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.IO;
using System.Linq; using System.Linq;
using OfficeOpenXml; using OfficeOpenXml;
@ -139,8 +140,7 @@ namespace Tools.ExcelResolver.Editor
{ {
if (fieldDatas.Values.Count(f => f.varName == fieldData.varName) > 1) if (fieldDatas.Values.Count(f => f.varName == fieldData.varName) > 1)
{ {
Debug.LogError($"'{classCodeData.className}'拥有相同的字段: {fieldData.varName}"); throw new Exception($"'{classCodeData.className}'拥有相同的字段: {fieldData.varName}");
return null;
} }
} }

Loading…
Cancel
Save