From 62c191256819922ccfa7f23fd9d74035ab5212ec Mon Sep 17 00:00:00 2001 From: zhengchang <985942825@qq.com> Date: Sat, 8 Feb 2025 20:23:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96TClassAndStruct?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExcelResolver/Editor/Core/Types/TClassAndStruct.cs | 8 ++++++++ .../Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs | 3 ++- .../Editor/Core/Util/ExcelResolverUtil.TType.cs | 7 +++++++ Assets/_Project/Scripts/Generator/Excel/Test.cs | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TClassAndStruct.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TClassAndStruct.cs index e0ac202..6afcd2f 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TClassAndStruct.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TClassAndStruct.cs @@ -10,11 +10,19 @@ namespace Tools.ExcelResolver.Editor { RealType = classType; FieldWriteFormat = RealType.Name; + var fields = RealType.GetFields(); + tType = new TType[fields.Length]; + for (int i = 0; i < fields.Length; i++) + { + tType[i] = ExcelResolverUtil.GetTTypeByString(fields[i].FieldType.Name); + } } internal override Type RealType { get; } internal override object DefaultValue => null; internal override string FieldWriteFormat { get; } + private TType[] tType; + internal override bool String2TType(string typeText, out TType result) { result = null; diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs index 06d2321..67577fd 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs @@ -13,7 +13,8 @@ namespace Tools.ExcelResolver.Editor internal override bool String2TType(string typeText, out TType result) { result = null; - if (string.Equals(typeText, "int", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(typeText, "int", StringComparison.OrdinalIgnoreCase) + || string.Equals(typeText, "int32", StringComparison.OrdinalIgnoreCase)) { result = new TInt(typeText); return true; diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs index 5052885..0c882b4 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs @@ -80,6 +80,13 @@ namespace Tools.ExcelResolver.Editor } _classAndStructTypes ??= GetAllClassAndStruct(); + foreach (var classAndStructType in _classAndStructTypes) + { + if (string.Equals(classAndStructType.Name, targetText, StringComparison.OrdinalIgnoreCase)) + { + return Activator.CreateInstance(typeof(TClassAndStruct), targetText, classAndStructType) as TType; + } + } throw new Exception($"type定义错误 " + $"className: '{_currentClassName}' " + diff --git a/Assets/_Project/Scripts/Generator/Excel/Test.cs b/Assets/_Project/Scripts/Generator/Excel/Test.cs index 3aa368f..69f04af 100644 --- a/Assets/_Project/Scripts/Generator/Excel/Test.cs +++ b/Assets/_Project/Scripts/Generator/Excel/Test.cs @@ -28,6 +28,6 @@ namespace Tools.ExcelResolver /// /// /// - public int item; + public Item item; } }