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)
{