From fabfe4be0fba3c734af5de0556af63021d432771 Mon Sep 17 00:00:00 2001 From: coffee <985942825@qq.com> Date: Sun, 26 Jan 2025 01:26:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Unity-Tools/Core/Editor/DirectoryUtil.cs | 8 ++++++- .../ExcelResolver/Editor/Core/Types/TBool.cs | 12 +++++++--- .../ExcelResolver/Editor/Core/Types/TDict.cs | 24 ++++++++++++------- .../ExcelResolver/Editor/Core/Types/TEnum.cs | 7 +++--- .../ExcelResolver/Editor/Core/Types/TFloat.cs | 11 +++++++-- .../ExcelResolver/Editor/Core/Types/TInt.cs | 10 ++++++-- .../ExcelResolver/Editor/Core/Types/TList.cs | 17 +++++++------ .../Editor/Core/Types/TString.cs | 12 +++++++--- .../ExcelResolver/Editor/Core/Types/TType.cs | 5 ++-- .../Editor/Core/Types/TVector2.cs | 10 ++++++-- .../Editor/Core/Types/TVector3.cs | 10 ++++++-- .../Core/Util/ExcelResolverUtil.TType.cs | 5 ++-- 12 files changed, 93 insertions(+), 38 deletions(-) diff --git a/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs b/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs index ab75fa4..9b9083b 100644 --- a/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs +++ b/Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs @@ -66,7 +66,7 @@ namespace Tools.Editor } /// - /// 删除目录下所有子目录和文件。 + /// 删除文件夹 /// /// /// @@ -77,6 +77,12 @@ namespace Tools.Editor return false; } Directory.Delete(path, true); + + string metaPath = $"{path}.meta"; + if (File.Exists(metaPath)) + { + File.Delete(metaPath); + } return true; } } diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TBool.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TBool.cs index c68882a..c8b328e 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TBool.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TBool.cs @@ -5,14 +5,20 @@ namespace Tools.ExcelResolver.Editor internal class TBool : TType { public TBool() { } - public TBool(string typeText = null) : base(typeText) { } + public TBool(string typeText) : base(typeText) { } internal override Type RealType => typeof(bool); internal override object DefaultValue => false; internal override string FieldWriteFormat => "System.Boolean"; - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { - return string.Equals(typeText, "bool", StringComparison.OrdinalIgnoreCase); + result = null; + if (string.Equals(typeText, "bool", StringComparison.OrdinalIgnoreCase)) + { + result = new TBool(typeText); + return true; + } + return false; } internal override object TryParseFrom(string cellText) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TDict.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TDict.cs index aeb489c..1d07ab6 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TDict.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TDict.cs @@ -7,10 +7,7 @@ namespace Tools.ExcelResolver.Editor internal class TDict : TType { public TDict() { } - public TDict(string typeText = null) : base(typeText) - { - String2TType(typeText); - } + public TDict(string typeText) : base(typeText) { } internal override Type RealType => typeof(Dictionary<,>).MakeGenericType(KeyType.RealType, ValueType.RealType); internal override string FieldWriteFormat => $"Dictionary<{KeyType.RealType.Name}, {ValueType.RealType.Name}>"; internal override object DefaultValue => Activator.CreateInstance(typeof(Dictionary<,>).MakeGenericType(KeyType.RealType, ValueType.RealType)); @@ -19,8 +16,9 @@ namespace Tools.ExcelResolver.Editor internal TType KeyType { get; set; } internal TType ValueType { get; set; } - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { + result = null; var split = typeText.Split(',', StringSplitOptions.RemoveEmptyEntries); if (split.Length < 3 || !split[0].StartsWith("dict", StringComparison.OrdinalIgnoreCase)) { @@ -28,10 +26,20 @@ namespace Tools.ExcelResolver.Editor } // 解析键和值的类型 - KeyType = ExcelResolverUtil.GetTTypeByString(split[1]); - ValueType = ExcelResolverUtil.GetTTypeByString(split[2]); + var keyType = ExcelResolverUtil.GetTTypeByString(split[1]); + var valueType = ExcelResolverUtil.GetTTypeByString(split[2]); + + if (keyType != null && valueType != null) + { + result = new TDict(typeText) + { + KeyType = keyType, + ValueType = valueType + }; + return true; + } - return KeyType != null && ValueType != null; + return false; } internal override object TryParseFrom(string cellText) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TEnum.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TEnum.cs index 97d79e8..c9e1311 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TEnum.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TEnum.cs @@ -5,7 +5,7 @@ namespace Tools.ExcelResolver.Editor internal class TEnum : TType { public TEnum() { } - public TEnum(string typeText = null, Type enumType = null) : base(typeText) + public TEnum(string typeText, Type enumType) : base(typeText) { RealType = enumType; FieldWriteFormat = RealType.Name; @@ -13,9 +13,10 @@ namespace Tools.ExcelResolver.Editor internal override Type RealType { get; } internal override object DefaultValue => 0; internal override string FieldWriteFormat { get; } - - internal override bool String2TType(string typeText) + + internal override bool String2TType(string typeText, out TType result) { + result = null; return false; } diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TFloat.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TFloat.cs index 7f4a0f0..c39be7e 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TFloat.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TFloat.cs @@ -10,12 +10,19 @@ namespace Tools.ExcelResolver.Editor internal override object DefaultValue => 0.0f; internal override string FieldWriteFormat => "System.Single"; - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { - return string.Equals(typeText, "float", StringComparison.OrdinalIgnoreCase); + result = null; + if (string.Equals(typeText, "float", StringComparison.OrdinalIgnoreCase)) + { + result = new TFloat(typeText); + return true; + } + return false; } + internal override object TryParseFrom(string cellText) { if (float.TryParse(cellText, out float result)) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs index 3cd9168..06d2321 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TInt.cs @@ -10,9 +10,15 @@ namespace Tools.ExcelResolver.Editor internal override object DefaultValue => 0; internal override string FieldWriteFormat => "System.Int32"; - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { - return string.Equals(typeText, "int", StringComparison.OrdinalIgnoreCase); + result = null; + if (string.Equals(typeText, "int", StringComparison.OrdinalIgnoreCase)) + { + result = new TInt(typeText); + return true; + } + return false; } internal override object TryParseFrom(string cellText) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TList.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TList.cs index fab5805..175decf 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TList.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TList.cs @@ -7,27 +7,30 @@ namespace Tools.ExcelResolver.Editor internal class TList : TType { public TList() { } - public TList(string typeText = null) : base(typeText) - { - String2TType(typeText); - } + public TList(string typeText = null) : base(typeText) { } internal override Type RealType => typeof(List<>).MakeGenericType(InnerType.RealType); internal override string FieldWriteFormat => $"List<{InnerType.RealType.Name}>"; internal override object DefaultValue => Activator.CreateInstance(typeof(List<>).MakeGenericType(InnerType.RealType)); internal TType InnerType { get; set; } - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { + result = null; var split = typeText.Split(','); if (split.Length < 2 || !split[0].StartsWith("list", StringComparison.OrdinalIgnoreCase)) { return false; } - InnerType = ExcelResolverUtil.GetTTypeByString(split[1]); + var innerType = ExcelResolverUtil.GetTTypeByString(split[1]); + if (innerType != null) + { + result = new TList(typeText) { InnerType = innerType }; + return true; + } - return InnerType != null; + return false; } internal override object TryParseFrom(string cellText) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TString.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TString.cs index 57c8558..9add2ed 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TString.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TString.cs @@ -10,11 +10,17 @@ namespace Tools.ExcelResolver.Editor internal override object DefaultValue => string.Empty; internal override string FieldWriteFormat => "System.string"; - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { - return string.Equals(typeText, "string", StringComparison.OrdinalIgnoreCase); + result = null; + if (string.Equals(typeText, "string", StringComparison.OrdinalIgnoreCase)) + { + result = new TString(typeText); + return true; + } + return false; } - + internal override object TryParseFrom(string cellText) { return cellText; diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TType.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TType.cs index 5af269d..98f3880 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TType.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TType.cs @@ -13,13 +13,14 @@ namespace Tools.ExcelResolver.Editor /// 类型的写入格式 /// internal abstract string FieldWriteFormat { get; } - + /// /// 通过字符串判断是否是当前类型 /// /// + /// /// - internal abstract bool String2TType(string typeText); + internal abstract bool String2TType(string typeText, out TType result); /// /// 将字符串转换为当前类型 diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector2.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector2.cs index 90a5b08..08ac91a 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector2.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector2.cs @@ -11,9 +11,15 @@ namespace Tools.ExcelResolver.Editor internal override object DefaultValue => Vector2.zero; internal override string FieldWriteFormat => "Vector2"; - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { - return string.Equals(typeText, "vector2", StringComparison.OrdinalIgnoreCase); + result = null; + if (string.Equals(typeText, "vector2", StringComparison.OrdinalIgnoreCase)) + { + result = new TVector2(typeText); + return true; + } + return false; } internal override object TryParseFrom(string cellText) diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector3.cs b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector3.cs index d003ed7..22147aa 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector3.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Types/TVector3.cs @@ -11,9 +11,15 @@ namespace Tools.ExcelResolver.Editor internal override object DefaultValue => Vector3.zero; internal override string FieldWriteFormat => "Vector3"; - internal override bool String2TType(string typeText) + internal override bool String2TType(string typeText, out TType result) { - return string.Equals(typeText, "vector3", StringComparison.OrdinalIgnoreCase); + result = null; + if (string.Equals(typeText, "vector3", StringComparison.OrdinalIgnoreCase)) + { + result = new TVector3(typeText); + return true; + } + return false; } internal override object TryParseFrom(string cellText) 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 ff607eb..faf6d5b 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs @@ -49,12 +49,11 @@ namespace Tools.ExcelResolver.Editor foreach (var tType in _allTTypes) { - if (tType.String2TType(targetText)) + if (tType.String2TType(targetText, out var result)) { - return Activator.CreateInstance(tType.GetType(), targetText) as TType; + return result; } } - _enumTypes ??= GetAllEnumTypes(); foreach (var enumType in _enumTypes) {