From 42e361f0ad0846b339da6489605b2dccd9514d2e Mon Sep 17 00:00:00 2001 From: coffee <985942825@qq.com> Date: Mon, 20 Jan 2025 00:28:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/ExcelResolver/Excel/hero.xlsx | Bin 10724 -> 10789 bytes Assets/ScriptableObject/Excel/Hero_3.asset | 22 +++++++++++++++ .../ScriptableObject/Excel/Hero_3.asset.meta | 8 ++++++ .../ExcelResolver/Editor/Core/Types/TBool.cs | 9 ++++-- .../ExcelResolver/Editor/Core/Types/TFloat.cs | 9 ++++-- .../ExcelResolver/Editor/Core/Types/TInt.cs | 9 ++++-- .../ExcelResolver/Editor/Core/Types/TList.cs | 7 ++++- .../Editor/Core/Types/TString.cs | 9 ++++-- .../ExcelResolver/Editor/Core/Types/TType.cs | 4 ++- .../Editor/Core/Types/TVector2.cs | 11 ++++++-- .../Editor/Core/Types/TVector3.cs | 13 ++++++--- .../Core/Util/ExcelResolverUtil.TType.cs | 26 ++++++++++++++++-- 12 files changed, 108 insertions(+), 19 deletions(-) create mode 100644 Assets/ScriptableObject/Excel/Hero_3.asset create mode 100644 Assets/ScriptableObject/Excel/Hero_3.asset.meta diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx index 01d332d8116ca9a3b5f8e6de9ef5cc6cab233cf1..8e14bce048d36d5ba0a510f2053de5f1dea5cdc4 100644 GIT binary patch delta 2115 zcmV-J2)y^?Q>9d}o&kU8WuMz$0RRAO0ssIJ0001FZ(~q$Z*X%jV{dY0E_iKheUjfw z!!Q`d?*-qX z=lkWHkHmv{RR%9$Y@t6qsej2#WT+VM}+io1&&MZIBtMp zy(gkAQi?sYo|>`+NP(e*3Y4>$b}0VwIxv;}bD&iYoK@i#wePfzd&rhzBktXETkMUq z*{n0`wlREuiXVSRH+OB-uu#pe1fVpQf(ZlMX_E?_WdJ%;+D>zBVtk-Adn~ziBfs*j z0C~Ac*KZ%|_s`YxYqflh@o(Lu+a?=6$iQb~nzt>NpgAA8Gy}@_Q2!XekIdIwf4Ck&dS4^6VxCtR`{BF{Ed{ zezxsgu#=X~Lus(rUVD4(W#i1gyrqeAA-te0nw?0reLrnin~gVyUM~>#lO*O^kJ>QHQ8UtQ7OtbAAWJIV|plCRF@Z%dHC{ zqUC=n%hE0L!i}=3iYtNqu}8%6TnLtiSYWi6sSbSO-eMM0P*Jwt;p8w!U;XKRf?!-B zeo|5vSI>^XFV7?)ksvWx1v%0JFO0oP;0}fcl3M{JBaQ^UkR?fyIobz9u+cv%iF}3> zUX$bcxz4v%w)w`Lm>lpq5lfc*qOmy5(FA|hV}G-9OX%?=pqQb1FG(Yo00VqFDV26c zPKw`jtvcEd+=t*EIg!$%qV%g!9TZeS@V~5rU=Mr{02Qe$@V^e2xHppcu+Ma9@K8ks z0W9L9M1Hd#DZZ{Pn7G4nZE2c&<(BM&?>}J7ZI3tMB_BNZWsS!}+8CrFVmF^|tKt)B~~nvh0Cah6%e6ONCVz z5ww<4yKvJ3vD~rkfmlu3^*}6l>_3DUa>HSF)85TF(|{YbgH{ED_Te_|sG)7ZEv@CB zum|#vf5wnmAH2a7eiy1E@@WiDmxZPF62NUv%Q&GiX<24f@eQmNugB`wPac2v8x65d zu&p9pyRAk#%YOUo$zhw*&|KavdshCaR&Hfm0=QZE(2^xICauVo=JW5{DwMg`Mv!I5 zO&w$&!`o`u9NigAt-(~9y)oI^#83k64)6UM8>X1_N(0fYG_A{2`p}rP9JA7VkG3*K zjAf)v6=O=U)uX;^b!KN!*(QIvo*cDBXle8fQD0qhd?bHiexzC9B;)|A9k}2yuCIUU zS+HD~6k=V^xqh@i@PEZ{C~7Fu~@y$h{F%m}wQV zUe{+Hs8}bN+78+Mt=r2R%tIqpB6F=EWD`KP8C|^+AR5o+Dhz*FYD{@u2#ixGBzAQP z%I*wwRY+r()waO00-0b6V2WJyeScjPGE>Zp^-!6Rt*$d~sIn(RxcLWqEDA7-0uyn5 z&o-089hhv%M>*_d$xa|l6o_B@e`7|nqL?LAlq`T+7HdTf&^_*?U8Eb}+5?ruD01x-mbSHoGTOe_ZU(FFsS{JZYO*DNRa4ZyttD4F{k99*M*9C$6!rs%egdtROC~zo&kSA86Bxz0RRAO0ssIJ0001FZ(~q$Z*X%jV{dY0E_iKheUi~i z!!Q_y?*-qXZBmlVZP&hmp!dFn?18rTFm1Qmp?H~` z^M5(#C-Hby7TybJlPftwbU=^?k}HwR*$CaI6aO4}#xf~bp(KBd&>9RHC#NSduOhBA z+-g;UwmBHjk)(-uH9~W1s|aJm=TI^;a1QCjOzDzYchoanG5*YEfCEC#a0!+PW*M%5 ze$^4t9w~T-tQNXx0D@yEpaf|RrUQz9ycTq6{v2qOp0mvDx^kWNar5c*{3(;%fZqQi)g zr~3J$`8sQRQSL+hPaOJ$`t%}oxG;!F&?6oINt65de002S^ zlidU#e^yPCn>Y}?Z`J+>O80=lGvl$#IF<3o*sk5G)K0Q{)_`oQ1`sP`Gs&;tmIT5Q zB+ed;h4lJ$tNTgx{NsC`c^ASf%8D3;{s?)bNLWgXV~oCj*?f3JUL|mm;*1p}M&C$< zJ}!R$ZC*3}R-FhD9xxPDj7~z7vmmIF6UlMqf3uPluySBL#{ypYF{nyTaH@>*EQm&< zhaktaK$>C3e}#h`4m2SvmYj1^2u;FCh6Ti5ooHFLZ13qW@ueKsu-7)8s}NUu#qfo9 zz4&sPa8|K{@Dr8?I<)>Sr@_?PXP)$k29lLy{&p@u0C5SMd!-o_-_&;7fQaaL>bmyp zf3otEqKV=vLE$7IVtK9v%U4)nw3w?3eCEMoo>Iu7EWO9cAx59V+5Qp1yh8j$dzj^B0knlX(0hX~9Qm7&H>*qCags4;^7x-o)N@e>1xQh9;@)?n)2a1z4F z)1kqjv5F$Ov7a~!&3GbRAe-g{H z9nM0iZ6dLs3>Y$B!R%!*ngsbtkC@nqZ6EPyBX)hn)JE+4i0}uM82_(I7<5+&w-f^qw-y5s zw-~n}>j8-4==nBeI{LjI3;qw5*QO9-w;uLK+0CCizJ{c;BCM{71vC<8f-OY5Hd&Yn}+Aa$g z?Za)_J40*09j&9E)d1uN`k8=deep&!_%1Y8 zzVN<_LWz508FgyY%5RPAYk1pC+p{~1sS}uDf*$KC@J=Q=6S_6h-{%q^$)A`XX;FC@ zIlyj5KBSTBzDJD(E7dIMNBWfsX!6>(6ZF~yYB=)Y;yN%U+85}GB<~9m=h7>2N%#x> z4y`?OD~wa@lg}v{v-k)g3V(vnx^$cY z007Mc000yK004MwFLP*Na%E&wbaH8KXLBxiZESVZ&ubJh6bJBo!T(`ME-kd1*>+os z%uEr{i#J`pN}PGy31*UUUUu2V3Ka@ll+uD8iam&U=%LW+dFg-S{`xPBTMFe(J?8V? zOTw2V+UXZM=s|_bnwT{kA%6?Nq&8D#H)b!}PuI3tfKHlBYHJ{713TPd?*B_ITR8bwglrV9a|OB`DL{$u&h94m;<;%i}f(v5`|QT1*z>C7qeEA1zn@w zb>Z<1Y;3V4LX|`=;rxZajD}}0Xv;Sm_EfeP3716TU;VbHCo767qkm##0n}7#4YjJ`SoKZDp5LYp=cD=lcdCD`kEYj`R5{P?%dC_x zr>&0=!J&B4PeDHiv`5;%?wgf(AAV@`HTLPq{NtDL&kL$KRQ7d~>TlMn%ylcyy>1o0pM z0F!|y7L#Nl5DNeR00031AOHXW6_Xq$lLbH-9jRTDv?f#m9FqwrKnHdN004MwFOvZ& z9FuG(4go!rdnYymWFnKnA{>*?ClDNh&$@J+0RRBa0{{RN000000000103ZMW0Ok^t z`zJsG#1@l1C^-R^lXoaK0lky1C_n+UlkX@z0hg03DIpwRo(e0y0{{R*3;+Na00000 z0000103ZMW0K){6;RG6!#3&Gx*(n+Vwg{8q1QnCSDK7%13X|ak6_W}o6$U#c00000 D`4qYD diff --git a/Assets/ScriptableObject/Excel/Hero_3.asset b/Assets/ScriptableObject/Excel/Hero_3.asset new file mode 100644 index 0000000..e3dbac6 --- /dev/null +++ b/Assets/ScriptableObject/Excel/Hero_3.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31296c0321326704c8614b265011bd90, type: 3} + m_Name: Hero_3 + m_EditorClassIdentifier: + id: 2 + name: "\u5973\u5DEB" + icon: hero_3 + hp: 80 + atk: 8 + speed: 1.1 + pos: {x: 3, y: 2, z: 4} + ches: {x: 5, y: 12} diff --git a/Assets/ScriptableObject/Excel/Hero_3.asset.meta b/Assets/ScriptableObject/Excel/Hero_3.asset.meta new file mode 100644 index 0000000..9c78293 --- /dev/null +++ b/Assets/ScriptableObject/Excel/Hero_3.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 627fad9d9ab58274298938ce4db65b03 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: 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 1016604..2cf388c 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TBool.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "bool"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(bool); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - if (bool.TryParse(s, out var result)) + if (bool.TryParse(cellText, out var result)) { return 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 a49730c..9ac8087 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TFloat.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "float"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(float); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - if (float.TryParse(s, out float result)) + if (float.TryParse(cellText, out float result)) { return result; } 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 7de3765..2d2859b 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TInt.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "int"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(int); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - return int.TryParse(s, out var result) ? result : null; + return int.TryParse(cellText, out var result) ? result : null; } } } \ No newline at end of file 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 2c0c4f9..59161d0 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TList.cs @@ -6,8 +6,13 @@ namespace Tools.ExcelResolver.Editor internal class TList : TType { internal override string TypeName => "list"; + internal override bool String2TType(string typeText) + { + return false; + } + internal override Type RealType => typeof(List<>); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { 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 322a9eb..9ae9782 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TString.cs @@ -6,11 +6,16 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "string"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(string); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - return s; + return cellText; } } } \ No newline at end of file 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 65fc5ab..e37a1da 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TType.cs @@ -6,8 +6,10 @@ namespace Tools.ExcelResolver.Editor { internal abstract string TypeName { get; } + internal abstract bool String2TType(string typeText); + internal abstract Type RealType { get; } - internal abstract object TryParseFrom(string s); + internal abstract object TryParseFrom(string cellText); } } \ No newline at end of file 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 e1c705a..e672194 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector2.cs @@ -7,12 +7,17 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "vector2"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(Vector2); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - s = s[1..^1]; - var ss = s.Split(','); + cellText = cellText[1..^1]; + var ss = cellText.Split(','); if (ss.Length != 2) { return null; 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 24245c3..2e6b386 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Types/TVector3.cs @@ -7,17 +7,22 @@ namespace Tools.ExcelResolver.Editor { internal override string TypeName => "vector3"; + internal override bool String2TType(string typeText) + { + return string.Equals(typeText, TypeName, StringComparison.OrdinalIgnoreCase); + } + internal override Type RealType => typeof(Vector3); - internal override object TryParseFrom(string s) + internal override object TryParseFrom(string cellText) { - if (!s.StartsWith("(") || !s.EndsWith(")")) + if (!cellText.StartsWith("(") || !cellText.EndsWith(")")) { return null; } - s = s[1..^1]; - var ss = s.Split(','); + cellText = cellText[1..^1]; + var ss = cellText.Split(','); if (ss.Length != 3) { return null; diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs index 7e24c47..9fbdd0f 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/Core/Util/ExcelResolverUtil.TType.cs @@ -1,12 +1,22 @@ using System; -using System.Collections.Generic; using System.Linq; -using UnityEngine; +using System.Reflection; namespace Tools.ExcelResolver.Editor { internal static partial class ExcelResolverUtil { + private static TType[] _allTTypes; + + internal static TType[] GetAllTTypes() + { + return Assembly.GetAssembly(typeof(TType)) + .GetTypes() + .Where(t => t.IsSubclassOf(typeof(TType)) && !t.IsAbstract) + .Select(t => Activator.CreateInstance(t) as TType) + .ToArray(); + } + /// /// 更具类型字符串获取 TType /// @@ -14,7 +24,19 @@ namespace Tools.ExcelResolver.Editor /// internal static TType GetTTypeByString(string typeText) { + typeText = typeText.ToLower(); + _allTTypes ??= GetAllTTypes(); + + foreach (var tType in _allTTypes) + { + if (tType.String2TType(typeText)) + { + return tType; + } + } + + throw new Exception($"未找到类型 {typeText}"); return typeText switch {