Browse Source

设置默认值

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

BIN
Assets/ExcelResolver/Excel/hero.xlsx

Binary file not shown.

8
Assets/ExcelResolver/Json.meta

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 4b8a2f5e75555654bb2bb7f8ebc41d49
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1
Assets/ScriptableObject/Excel/Hero_1.asset

@ -21,3 +21,4 @@ MonoBehaviour:
speed: 1.2 speed: 1.2
pos: {x: 0, y: 1, z: 4} pos: {x: 0, y: 1, z: 4}
ches: {x: 0, y: 1} ches: {x: 0, y: 1}
attack_target: 01000000020000000300000004000000

10
Assets/ScriptableObject/Excel/Hero_2.asset

@ -13,11 +13,11 @@ MonoBehaviour:
m_Name: Hero_2 m_Name: Hero_2
m_EditorClassIdentifier: m_EditorClassIdentifier:
id: 2 id: 2
name: "\u6218\u58EB" name:
icon: hero_2 icon: hero_2
has: 1 has: 1
hp: 150 hp: 150
atk: 15 atk: 0
speed: 1 speed: 0
pos: {x: -5, y: 1, z: 5} pos: {x: 0, y: 0, z: 0}
ches: {x: -5, y: 1} ches: {x: 0, y: 0}

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

@ -63,5 +63,10 @@ namespace Tools.ExcelResolver
/// 位置 /// 位置
/// </summary> /// </summary>
public Vector2 ches; public Vector2 ches;
/// <summary>
/// 攻击优先级
/// </summary>
public List<int> attack_target;
} }
} }

4
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs

@ -4,6 +4,8 @@ namespace Tools.ExcelResolver.Editor
{ {
internal class TBool : TType internal class TBool : TType
{ {
internal override Type RealType => typeof(bool);
internal override object DefaultValue => false;
internal override string FieldWriteFormat => "System.Boolean"; internal override string FieldWriteFormat => "System.Boolean";
internal override bool String2TType(string typeText) internal override bool String2TType(string typeText)
@ -11,8 +13,6 @@ namespace Tools.ExcelResolver.Editor
return string.Equals(typeText, "bool", StringComparison.OrdinalIgnoreCase); return string.Equals(typeText, "bool", StringComparison.OrdinalIgnoreCase);
} }
internal override Type RealType => typeof(bool);
internal override object TryParseFrom(string cellText) internal override object TryParseFrom(string cellText)
{ {
if (bool.TryParse(cellText, out var result)) if (bool.TryParse(cellText, out var result))

1
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs

@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor
internal class TFloat : TType internal class TFloat : TType
{ {
internal override string FieldWriteFormat => "System.Single"; internal override string FieldWriteFormat => "System.Single";
internal override object DefaultValue => 0.0f;
internal override bool String2TType(string typeText) internal override bool String2TType(string typeText)
{ {

1
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs

@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor
internal class TInt : TType internal class TInt : TType
{ {
internal override string FieldWriteFormat => "System.Int32"; internal override string FieldWriteFormat => "System.Int32";
internal override object DefaultValue => 0;
internal override bool String2TType(string typeText) internal override bool String2TType(string typeText)
{ {

21
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs

@ -6,7 +6,8 @@ namespace Tools.ExcelResolver.Editor
internal class TList : TType internal class TList : TType
{ {
internal override string FieldWriteFormat => "List<int>"; internal override string FieldWriteFormat => "List<int>";
internal override object DefaultValue => new List<int>();
internal override bool String2TType(string typeText) internal override bool String2TType(string typeText)
{ {
var split = typeText.Split('|'); var split = typeText.Split('|');
@ -26,6 +27,24 @@ namespace Tools.ExcelResolver.Editor
internal override Type RealType => typeof(List<int>); internal override Type RealType => typeof(List<int>);
internal override object TryParseFrom(string cellText) internal override object TryParseFrom(string cellText)
{ {
var split = cellText.Split('|');
if (split.Length > 0)
{
var list = new List<int>();
foreach (var s in split)
{
if (int.TryParse(s, out var result))
{
list.Add(result);
}
else
{
return null;
}
}
return list;
}
return null; return null;
} }
} }

1
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs

@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor
internal class TString : TType internal class TString : TType
{ {
internal override string FieldWriteFormat => "System.string"; internal override string FieldWriteFormat => "System.string";
internal override object DefaultValue => string.Empty;
internal override bool String2TType(string typeText) internal override bool String2TType(string typeText)
{ {

6
Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs

@ -4,11 +4,13 @@ namespace Tools.ExcelResolver.Editor
{ {
internal abstract class TType internal abstract class TType
{ {
internal abstract Type RealType { get; }
internal abstract object DefaultValue { get; }
internal abstract string FieldWriteFormat { get; } internal abstract string FieldWriteFormat { get; }
internal abstract bool String2TType(string typeText); internal abstract bool String2TType(string typeText);
internal abstract Type RealType { get; }
internal abstract object TryParseFrom(string cellText); internal abstract object TryParseFrom(string cellText);
} }

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

@ -6,6 +6,7 @@ namespace Tools.ExcelResolver.Editor
internal class TVector2 : TType internal class TVector2 : TType
{ {
internal override string FieldWriteFormat => "Vector2"; internal override string FieldWriteFormat => "Vector2";
internal override object DefaultValue => Vector2.zero;
internal override bool String2TType(string typeText) internal override bool String2TType(string typeText)
{ {

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

@ -6,6 +6,7 @@ namespace Tools.ExcelResolver.Editor
internal class TVector3 : TType internal class TVector3 : TType
{ {
internal override string FieldWriteFormat => "Vector3"; internal override string FieldWriteFormat => "Vector3";
internal override object DefaultValue => Vector3.zero;
internal override bool String2TType(string typeText) internal override bool String2TType(string typeText)
{ {

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

@ -49,13 +49,22 @@ namespace Tools.ExcelResolver.Editor
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
{ {
var result = type.TryParseFrom(cell.Text); object result;
if (string.IsNullOrEmpty(cell.Text)) // 如果单元格为空,则返回默认值
{
result = type.DefaultValue;
}
else
{
result = type.TryParseFrom(cell.Text);
}
if (result != null) if (result != null)
{ {
return result; return result;
} }
throw new Exception($"单元格转换失败 FullAddress: {cell.FullAddress} Text: {cell.Text} className: {className}"); throw new Exception($"单元格转换失败 className: '{className}' FullAddress: {cell.FullAddress} Text: '{cell.Text}'");
} }
/// <summary> /// <summary>

2
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs

@ -60,8 +60,6 @@ namespace Tools.ExcelResolver.Editor
var fieldData = pair.Value; var fieldData = pair.Value;
var cell = worksheet.Cells[row, col]; var cell = worksheet.Cells[row, col];
if (string.IsNullOrEmpty(cell.Text)) continue;
object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, fieldData.type, classCodeData.className); object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, fieldData.type, classCodeData.className);
FieldInfo fieldInfo = soType.GetField(fieldData.varName); FieldInfo fieldInfo = soType.GetField(fieldData.varName);
if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}"); if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}");

Loading…
Cancel
Save