diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx index ca6fb04..5fbf868 100644 Binary files a/Assets/ExcelResolver/Excel/hero.xlsx and b/Assets/ExcelResolver/Excel/hero.xlsx differ diff --git a/Assets/ExcelResolver/Json.meta b/Assets/ExcelResolver/Json.meta deleted file mode 100644 index 0a83683..0000000 --- a/Assets/ExcelResolver/Json.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4b8a2f5e75555654bb2bb7f8ebc41d49 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ScriptableObject/Excel/Hero_1.asset b/Assets/ScriptableObject/Excel/Hero_1.asset index 02be0de..504a333 100644 --- a/Assets/ScriptableObject/Excel/Hero_1.asset +++ b/Assets/ScriptableObject/Excel/Hero_1.asset @@ -21,3 +21,4 @@ MonoBehaviour: speed: 1.2 pos: {x: 0, y: 1, z: 4} ches: {x: 0, y: 1} + attack_target: 01000000020000000300000004000000 diff --git a/Assets/ScriptableObject/Excel/Hero_2.asset b/Assets/ScriptableObject/Excel/Hero_2.asset index 124729f..b734157 100644 --- a/Assets/ScriptableObject/Excel/Hero_2.asset +++ b/Assets/ScriptableObject/Excel/Hero_2.asset @@ -13,11 +13,11 @@ MonoBehaviour: m_Name: Hero_2 m_EditorClassIdentifier: id: 2 - name: "\u6218\u58EB" + name: icon: hero_2 has: 1 hp: 150 - atk: 15 - speed: 1 - pos: {x: -5, y: 1, z: 5} - ches: {x: -5, y: 1} + atk: 0 + speed: 0 + pos: {x: 0, y: 0, z: 0} + ches: {x: 0, y: 0} diff --git a/Assets/Scripts/Generator/Excel/Hero.cs b/Assets/Scripts/Generator/Excel/Hero.cs index 2617962..6e1f846 100644 --- a/Assets/Scripts/Generator/Excel/Hero.cs +++ b/Assets/Scripts/Generator/Excel/Hero.cs @@ -63,5 +63,10 @@ namespace Tools.ExcelResolver /// 位置 /// public Vector2 ches; + + /// + /// 攻击优先级 + /// + public List attack_target; } } diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs index 32298f1..a184271 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs @@ -4,6 +4,8 @@ namespace Tools.ExcelResolver.Editor { internal class TBool : TType { + internal override Type RealType => typeof(bool); + internal override object DefaultValue => false; internal override string FieldWriteFormat => "System.Boolean"; internal override bool String2TType(string typeText) @@ -11,8 +13,6 @@ namespace Tools.ExcelResolver.Editor return string.Equals(typeText, "bool", StringComparison.OrdinalIgnoreCase); } - internal override Type RealType => typeof(bool); - internal override object TryParseFrom(string cellText) { if (bool.TryParse(cellText, out var result)) diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs index 315e7c6..e1ce7c7 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs @@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor internal class TFloat : TType { internal override string FieldWriteFormat => "System.Single"; + internal override object DefaultValue => 0.0f; internal override bool String2TType(string typeText) { diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs index a18d66b..aee0ca3 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs @@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor internal class TInt : TType { internal override string FieldWriteFormat => "System.Int32"; + internal override object DefaultValue => 0; internal override bool String2TType(string typeText) { 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 0dee360..18f3c74 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs @@ -6,7 +6,8 @@ namespace Tools.ExcelResolver.Editor internal class TList : TType { internal override string FieldWriteFormat => "List"; - + internal override object DefaultValue => new List(); + internal override bool String2TType(string typeText) { var split = typeText.Split('|'); @@ -26,6 +27,24 @@ namespace Tools.ExcelResolver.Editor internal override Type RealType => typeof(List); internal override object TryParseFrom(string cellText) { + var split = cellText.Split('|'); + if (split.Length > 0) + { + var list = new List(); + foreach (var s in split) + { + if (int.TryParse(s, out var result)) + { + list.Add(result); + } + else + { + return null; + } + } + + return list; + } return null; } } diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs index 671d717..6596aa9 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs @@ -5,6 +5,7 @@ namespace Tools.ExcelResolver.Editor internal class TString : TType { internal override string FieldWriteFormat => "System.string"; + internal override object DefaultValue => string.Empty; internal override bool String2TType(string typeText) { diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs index 00c0668..a3dbb3b 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs @@ -4,11 +4,13 @@ namespace Tools.ExcelResolver.Editor { internal abstract class TType { + internal abstract Type RealType { get; } + + internal abstract object DefaultValue { get; } + internal abstract string FieldWriteFormat { get; } internal abstract bool String2TType(string typeText); - - internal abstract Type RealType { get; } internal abstract object TryParseFrom(string cellText); } diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs index 758f139..d7301c3 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs @@ -6,6 +6,7 @@ namespace Tools.ExcelResolver.Editor internal class TVector2 : TType { internal override string FieldWriteFormat => "Vector2"; + internal override object DefaultValue => Vector2.zero; internal override bool String2TType(string typeText) { diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs index d969091..db4c77c 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs @@ -6,6 +6,7 @@ namespace Tools.ExcelResolver.Editor internal class TVector3 : TType { internal override string FieldWriteFormat => "Vector3"; + internal override object DefaultValue => Vector3.zero; internal override bool String2TType(string typeText) { diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs index 186de11..fca0594 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.Cell.cs @@ -49,13 +49,22 @@ namespace Tools.ExcelResolver.Editor internal static object ConvertCellValue(ExcelRange cell, T type, string className) 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) { return result; } - throw new Exception($"单元格转换失败 FullAddress: {cell.FullAddress} Text: {cell.Text} className: {className}"); + throw new Exception($"单元格转换失败 className: '{className}' FullAddress: {cell.FullAddress} Text: '{cell.Text}'"); } /// diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs index 44076cb..2b2547a 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs @@ -60,8 +60,6 @@ namespace Tools.ExcelResolver.Editor var fieldData = pair.Value; var cell = worksheet.Cells[row, col]; - if (string.IsNullOrEmpty(cell.Text)) continue; - object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, fieldData.type, classCodeData.className); FieldInfo fieldInfo = soType.GetField(fieldData.varName); if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{fieldData.varName}");