From 8456b6c1626e368bd86b54044a338187d420bcf7 Mon Sep 17 00:00:00 2001 From: zzdxxz <2079238449@qq.com> Date: Wed, 27 Aug 2025 19:56:49 +0800 Subject: [PATCH] =?UTF-8?q?(client)=20feat:=E5=AE=9E=E7=8E=B0=E7=83=AD?= =?UTF-8?q?=E9=87=8D=E8=BD=BD=EF=BC=8C=E5=AE=9E=E7=8E=B0=E5=A4=9A=E7=BB=B4?= =?UTF-8?q?=E5=BA=A6=EF=BC=8C=E5=AE=9E=E7=8E=B0=E6=AD=A6=E5=99=A8=EF=BC=8C?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=8E=89=E8=90=BD=E7=89=A9=EF=BC=8C=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=8A=B6=E6=80=81UI=EF=BC=8C=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=94=BB=E5=87=BBAI=20(#44)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: zzdxxz <2079238449@qq.com> Co-committed-by: zzdxxz <2079238449@qq.com> --- .../Character/Test/Body/Body_Down_0.png | Bin 1766 -> 0 bytes .../Character/Test/Body/Body_Down_1.png | Bin 1744 -> 0 bytes .../Character/Test/Body/Body_Down_1.png.meta | 117 - .../Character/Test/Body/Body_Down_2.png | Bin 1712 -> 0 bytes .../Character/Test/Body/Body_Down_3.png | Bin 1727 -> 0 bytes .../Character/Test/Body/Body_Down_3.png.meta | 117 - .../Character/Test/Body/Body_Down_4.png | Bin 1766 -> 0 bytes .../Character/Test/Body/Body_Down_4.png.meta | 117 - .../Character/Test/Body/idle_down.png | Bin 0 -> 3646 bytes ...ody_Down_2.png.meta => idle_down.png.meta} | 8 +- .../Resources/Default/DefaultEntity.prefab | 8 +- Client/Assets/Resources/Image/Square.png | Bin 0 -> 2097 bytes .../Square.png.meta} | 90 +- .../Entity/BuildingPrefab Variant.prefab | 16 +- .../Prefab/Entity/BulletPrefab Variant.prefab | 19 +- .../Entity/CharacterPrefab Variant.prefab | 18 +- .../Prefab/Entity/EntityPrefab.prefab | 39 +- .../Entity/MonsterPrefab Variant.prefab | 125 + .../Entity/MonsterPrefab Variant.prefab.meta | 7 + .../Prefab/Entity/PickupPrefab Variant.prefab | 123 + .../Entity/PickupPrefab Variant.prefab.meta | 7 + .../Resources/Prefab/TextTemplate.prefab | 17 +- Client/Assets/Resources/Prefab/UI/Bar.prefab | 167 + .../Resources/Prefab/UI/Bar.prefab.meta | 7 + .../Assets/Resources/Prefab/UI/DevMenu.prefab | 18 +- .../Resources/Prefab/UI/Equipment.prefab | 565 ++ .../Resources/Prefab/UI/Equipment.prefab.meta | 7 + .../Assets/Resources/Prefab/UI/EscUI.prefab | 165 +- .../Resources/Prefab/UI/SettingUI.prefab | 7330 +++++++++++++++++ .../Resources/Prefab/UI/SettingUI.prefab.meta | 7 + Client/Assets/RunTimeResource.meta | 8 + .../RunTimeResource/MiniMap.renderTexture | 39 + .../MiniMap.renderTexture.meta | 8 + Client/Assets/Scenes/Game.unity | 2556 +++++- Client/Assets/Scenes/Initiate.unity | 1269 ++- Client/Assets/Scripts/AI/AIBase.cs | 48 +- .../Scripts/AI/ConditionDelegateFactory.cs | 309 + .../AI/ConditionDelegateFactory.cs.meta | 3 + .../Assets/Scripts/AI/ConditionFunctions.cs | 21 + .../Scripts/AI/ConditionFunctions.cs.meta | 3 + Client/Assets/Scripts/AI/JobBase.cs | 341 +- Client/Assets/Scripts/AI/JobGiver.cs | 22 +- Client/Assets/Scripts/Base/Launcher.cs | 320 +- Client/Assets/Scripts/Base/Setting.cs | 14 +- Client/Assets/Scripts/Base/UIInputControl.cs | 39 +- .../Scripts/CameraControl/CameraControl.cs | 186 +- .../Scripts/CameraControl/MiniMapCamera.cs | 15 + .../CameraControl/MiniMapCamera.cs.meta | 3 + .../Assets/Scripts/Configs/ConfigProcessor.cs | 16 +- Client/Assets/Scripts/Data/AttributesDef.cs | 13 - Client/Assets/Scripts/Data/BehaviorTreeDef.cs | 5 +- Client/Assets/Scripts/Data/DefinePack.cs | 352 +- Client/Assets/Scripts/Data/DrawingOrderDef.cs | 312 +- Client/Assets/Scripts/Data/EntityDef.cs | 6 +- Client/Assets/Scripts/Data/EventDef.cs | 21 + Client/Assets/Scripts/Data/EventDef.cs.meta | 3 + .../Data/{ResourcesDef.cs => ImageDef.cs} | 0 ...{ResourcesDef.cs.meta => ImageDef.cs.meta} | 0 Client/Assets/Scripts/Data/ItemDef.cs | 11 +- Client/Assets/Scripts/Data/MonsterDef.cs | 2 +- Client/Assets/Scripts/Data/WeaponDef.cs | 21 + Client/Assets/Scripts/Data/WeaponDef.cs.meta | 3 + Client/Assets/Scripts/Entity/Attributes.cs | 27 + .../Assets/Scripts/Entity/Attributes.cs.meta | 3 + Client/Assets/Scripts/Entity/Bullet.cs | 8 +- Client/Assets/Scripts/Entity/Character.cs | 98 +- Client/Assets/Scripts/Entity/Entity.cs | 706 +- .../Scripts/Entity/EntityHitEventArgs.cs | 25 + .../Scripts/Entity/EntityHitEventArgs.cs.meta | 3 + Client/Assets/Scripts/Entity/Inventory.cs | 185 +- Client/Assets/Scripts/Entity/InventorySlot.cs | 78 + .../Scripts/Entity/InventorySlot.cs.meta | 3 + Client/Assets/Scripts/Entity/Monster.cs | 19 +- Client/Assets/Scripts/Entity/Outline.cs | 14 +- Client/Assets/Scripts/Entity/Pickup.cs | 70 + Client/Assets/Scripts/Entity/Pickup.cs.meta | 3 + Client/Assets/Scripts/Item/ItemResource.cs | 116 +- Client/Assets/Scripts/Item/WeaponResource.cs | 239 + .../Scripts/Item/WeaponResource.cs.meta | 3 + .../Scripts/Logging/LoggerManagerWrapper.cs | 17 + .../Logging/LoggerManagerWrapper.cs.meta | 3 + Client/Assets/Scripts/Logging/UnityLogger.cs | 5 +- .../Scripts/Managers/AffiliationManager.cs | 137 +- Client/Assets/Scripts/Managers/Buffer.cs | 4 +- .../Assets/Scripts/Managers/DefineManager.cs | 196 +- .../Assets/Scripts/Managers/EntityManage.cs | 795 +- .../Assets/Scripts/Managers/EventManager.cs | 181 + .../Scripts/Managers/EventManager.cs.meta | 3 + .../Assets/Scripts/Managers/ILaunchManager.cs | 9 + .../Scripts/Managers/ILaunchManager.cs.meta | 3 + .../Scripts/Managers/ItemResourceManager.cs | 95 +- .../Scripts/Managers/PackagesImageManager.cs | 518 +- Client/Assets/Scripts/Managers/TileManager.cs | 209 +- Client/Assets/Scripts/Map/Dimension.cs | 90 + Client/Assets/Scripts/Map/Dimension.cs.meta | 3 + Client/Assets/Scripts/Map/DoubleMap.cs | 78 +- Client/Assets/Scripts/Map/MapGenerator.cs | 54 +- Client/Assets/Scripts/Map/MiniMap.cs | 24 + Client/Assets/Scripts/Map/MiniMap.cs.meta | 3 + Client/Assets/Scripts/Prefab/EntityPrefab.cs | 17 +- .../Scripts/Prefab/HoverButtonPrefab.cs | 43 + .../Scripts/Prefab/HoverButtonPrefab.cs.meta | 3 + .../Assets/Scripts/Prefab/SpriteAnimator.cs | 10 +- Client/Assets/Scripts/Program.cs | 214 +- Client/Assets/Scripts/Test/TestDefine.cs | 34 - Client/Assets/Scripts/Test/TestDefine.cs.meta | 2 - Client/Assets/Scripts/UI/BarUI.cs | 16 + Client/Assets/Scripts/UI/BarUI.cs.meta | 3 + Client/Assets/Scripts/UI/DevMenuUI.cs | 198 +- Client/Assets/Scripts/UI/EquipmentUI.cs | 275 + Client/Assets/Scripts/UI/EquipmentUI.cs.meta | 3 + Client/Assets/Scripts/UI/EscUI.cs | 15 +- Client/Assets/Scripts/UI/ItemUI.cs | 91 + Client/Assets/Scripts/UI/ItemUI.cs.meta | 3 + Client/Assets/Scripts/UI/LogUI.cs | 8 +- Client/Assets/Scripts/UI/PlayerStateUI.cs | 24 + .../Assets/Scripts/UI/PlayerStateUI.cs.meta | 3 + Client/Assets/Scripts/UI/SettingUI.cs | 75 + Client/Assets/Scripts/UI/SettingUI.cs.meta | 3 + Client/Assets/Scripts/Utils/BehaviorTree.cs | 1 + Client/Assets/Scripts/Utils/MonoSingleton.cs | 1 - Client/Assets/Scripts/Utils/Pathfinder.cs | 183 - .../Assets/Scripts/Utils/Pathfinder.cs.meta | 3 - .../Settings/DefaultVolumeProfile.asset | 5 +- .../TextMesh Pro/Fonts/SIMHEI SDF.asset | 4 +- .../LiberationSans SDF - Fallback.asset | 452 +- Client/Data/Core/Define/Item/Item.xml | 11 + Client/Data/Core/Define/Item/Weapon.xml | 68 +- Client/Data/Core/Define/Pawn/Character.xml | 176 +- Client/Data/Core/Define/Pawn/Monster.xml | 62 +- Client/Data/Core/Resources/Character/test.png | Bin 0 -> 734 bytes .../ProjectSettings/EditorBuildSettings.asset | 6 +- 132 files changed, 18568 insertions(+), 2534 deletions(-) delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_0.png delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_1.png delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_1.png.meta delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_2.png delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_3.png delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_3.png.meta delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_4.png delete mode 100644 Client/Assets/Resources/Character/Test/Body/Body_Down_4.png.meta create mode 100644 Client/Assets/Resources/Character/Test/Body/idle_down.png rename Client/Assets/Resources/Character/Test/Body/{Body_Down_2.png.meta => idle_down.png.meta} (96%) create mode 100644 Client/Assets/Resources/Image/Square.png rename Client/Assets/Resources/{Character/Test/Body/Body_Down_0.png.meta => Image/Square.png.meta} (56%) create mode 100644 Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab create mode 100644 Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab.meta create mode 100644 Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab create mode 100644 Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab.meta create mode 100644 Client/Assets/Resources/Prefab/UI/Bar.prefab create mode 100644 Client/Assets/Resources/Prefab/UI/Bar.prefab.meta create mode 100644 Client/Assets/Resources/Prefab/UI/Equipment.prefab create mode 100644 Client/Assets/Resources/Prefab/UI/Equipment.prefab.meta create mode 100644 Client/Assets/Resources/Prefab/UI/SettingUI.prefab create mode 100644 Client/Assets/Resources/Prefab/UI/SettingUI.prefab.meta create mode 100644 Client/Assets/RunTimeResource.meta create mode 100644 Client/Assets/RunTimeResource/MiniMap.renderTexture create mode 100644 Client/Assets/RunTimeResource/MiniMap.renderTexture.meta create mode 100644 Client/Assets/Scripts/AI/ConditionDelegateFactory.cs create mode 100644 Client/Assets/Scripts/AI/ConditionDelegateFactory.cs.meta create mode 100644 Client/Assets/Scripts/AI/ConditionFunctions.cs create mode 100644 Client/Assets/Scripts/AI/ConditionFunctions.cs.meta create mode 100644 Client/Assets/Scripts/CameraControl/MiniMapCamera.cs create mode 100644 Client/Assets/Scripts/CameraControl/MiniMapCamera.cs.meta create mode 100644 Client/Assets/Scripts/Data/EventDef.cs create mode 100644 Client/Assets/Scripts/Data/EventDef.cs.meta rename Client/Assets/Scripts/Data/{ResourcesDef.cs => ImageDef.cs} (100%) rename Client/Assets/Scripts/Data/{ResourcesDef.cs.meta => ImageDef.cs.meta} (100%) create mode 100644 Client/Assets/Scripts/Data/WeaponDef.cs create mode 100644 Client/Assets/Scripts/Data/WeaponDef.cs.meta create mode 100644 Client/Assets/Scripts/Entity/Attributes.cs create mode 100644 Client/Assets/Scripts/Entity/Attributes.cs.meta create mode 100644 Client/Assets/Scripts/Entity/EntityHitEventArgs.cs create mode 100644 Client/Assets/Scripts/Entity/EntityHitEventArgs.cs.meta create mode 100644 Client/Assets/Scripts/Entity/InventorySlot.cs create mode 100644 Client/Assets/Scripts/Entity/InventorySlot.cs.meta create mode 100644 Client/Assets/Scripts/Entity/Pickup.cs create mode 100644 Client/Assets/Scripts/Entity/Pickup.cs.meta create mode 100644 Client/Assets/Scripts/Item/WeaponResource.cs create mode 100644 Client/Assets/Scripts/Item/WeaponResource.cs.meta create mode 100644 Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs create mode 100644 Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs.meta create mode 100644 Client/Assets/Scripts/Managers/EventManager.cs create mode 100644 Client/Assets/Scripts/Managers/EventManager.cs.meta create mode 100644 Client/Assets/Scripts/Managers/ILaunchManager.cs create mode 100644 Client/Assets/Scripts/Managers/ILaunchManager.cs.meta create mode 100644 Client/Assets/Scripts/Map/Dimension.cs create mode 100644 Client/Assets/Scripts/Map/Dimension.cs.meta create mode 100644 Client/Assets/Scripts/Map/MiniMap.cs create mode 100644 Client/Assets/Scripts/Map/MiniMap.cs.meta create mode 100644 Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs create mode 100644 Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs.meta delete mode 100644 Client/Assets/Scripts/Test/TestDefine.cs delete mode 100644 Client/Assets/Scripts/Test/TestDefine.cs.meta create mode 100644 Client/Assets/Scripts/UI/BarUI.cs create mode 100644 Client/Assets/Scripts/UI/BarUI.cs.meta create mode 100644 Client/Assets/Scripts/UI/EquipmentUI.cs create mode 100644 Client/Assets/Scripts/UI/EquipmentUI.cs.meta create mode 100644 Client/Assets/Scripts/UI/ItemUI.cs create mode 100644 Client/Assets/Scripts/UI/ItemUI.cs.meta create mode 100644 Client/Assets/Scripts/UI/PlayerStateUI.cs create mode 100644 Client/Assets/Scripts/UI/PlayerStateUI.cs.meta create mode 100644 Client/Assets/Scripts/UI/SettingUI.cs create mode 100644 Client/Assets/Scripts/UI/SettingUI.cs.meta delete mode 100644 Client/Assets/Scripts/Utils/Pathfinder.cs delete mode 100644 Client/Assets/Scripts/Utils/Pathfinder.cs.meta create mode 100644 Client/Data/Core/Define/Item/Item.xml create mode 100644 Client/Data/Core/Resources/Character/test.png diff --git a/Client/Assets/Resources/Character/Test/Body/Body_Down_0.png b/Client/Assets/Resources/Character/Test/Body/Body_Down_0.png deleted file mode 100644 index 501c69e37b262581dbf0cb52621b120557875a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmVPx*ph-kQRCr$PnSV@HRT#$~hnmn2GcA>bED=RBGb$-#%atO5Da$#-TuF{rOiXgo zPaQUGw1x_^7E8^g&N&;II7QcVGYeN_YKkJ7`2(>u!wSqFqkRuN*Yn;V?|a{S&-->6 zoPXfG=Q-z|@8|iR=Nw)-Q9Ey)+PQuT3xK5Ll;+Bv6^`EJW~`m$I$D&Si8%%W3Q9_8 z-pp(Y7J{3xcGnnE04#tP6AT15W9^DZTvz}k#>Y}s&558~zyO?#^#lM}02TxQXm(s6 zXCDA~yq&SZh!3d)+BE>Zc+QIK0)Lr8(M03y%j4%wA5WEg_9@%C$|jNpSpi5-87IP6 zpcMpI9j&}#i%*ECBVGq!Cf=@aJrFYxsv#(MfF1zE2g-P$!iB7t@7jC47%Fr@NC2>P zRfyN_5E6v+QNxwh0i^)s?91ZskB_CFT93g%**5Fv@$3YZ+aM$Wuy;39Z1E8tEChYL z4547fMrFlNDF9?ozQo8Pst?uBvrj)66cnrRDo+BX0QC2F0AUe-UWuSHN2}@As+}}$ z>WiAw^_kwXdYRS_XwxEA(hma{&?A>N(emR1#pkqz`@CHPVHI=5)cvw$9r!Jm}MWU=FE4AP7vbJ?n+D++W}Bm zWZwY^q7MMXR+^kG`jC0FD<{9DE-{aa-@ogY*0um}=8NX$3ITcZivx7T7NHNao?_2PN)dI++3Ip&>*k7+dk;vYQnw)l*uq8Nr0K<&i{ zVSCQ1TpMHncm4@eoMkJZWre$Pm zrvk*Ic?y6ywvtntXBREg1aR^DrRp1DeX}M*uo90gb9drn8UR=yO-1%GkCGa|0H!Ty z0f3{80o)rOBc3fPEYujx&d;Z;DH#SP%h#3};t=$6%}I(IpRLX7SpZK=oJ7$NrTPFU z`k+7v&CkrF!ZmBOpY->6qbY9cX^g|Y;q`ew0P4QqOkb}maeV?PcK`#>Dm5R0QQc`< z$x<3KYZh%=vV_LGoK1AO(FmYx6m9#s^m^RP9HPbsadCnJxV0GoSZHJYNh->Ff&M-7 z8{N?N4x(!2`vw=649lLT6|v7XB5>ZMmP%%bE0|90bB>*0yHdG1MpU^5EW27 zb7_Tu_`HS18UWSem2Lq&06E9P1+9Mv_{qJY3)V;W^-Wdwl>)#qI3;I}_)&q>K{dS-Yc0DarqwujB8zQ zq@s^nE>1lX9?-;NEDPsBo(G@@QM323kKp%TonQd)=Hd-L&*FyKXD&0@x6&9K}yDqNuCCTIn~N<1s-d3$#u9uUs| z-e4*epsXNx0)Ux#2p>8mfn)&Nx9+CVV@Dc90)m-%jt79~q)}oV=F~U05L`RJZuXr5 zfMABeP-PJRD}baC_cae2Kf@<8$T~N9?^^+|+Te1$KNsMA`!{~-_(*i@02Xg0KwtRW z0FYf^^**N%90R~Y7y@1nC&(=v0QkL5#bdp$05Al6H4PXH;E%r=#Wz0b&*W%FTUzQw z>eaKi<&mcEICuUmZQA^$c#JJj{>4(lmnOH}9HoWwd)<6B?izrZqWHMD=Jmz%#nl%O z&>$%K&fXLm8A(k|O#y$_oj$7pgLqtxC*{tin%Y{WYgRfL!(ae>-OYM$H4TXCZ%eog z=xFV6TK?`-F)gmiZ3X}q38O1wg~ z^?BVP*#defBNHFj3Z(5S*c!OIYDY-d7}Ck*nqc*R0Avp00cwJX{=d> zuhyTUp{bL^-bVj{&FiUipME~Cz_}l)y&u*Z5Xjh1d@;iHSpG7UFE{d~DU`Q9vqXjs07K9(f{UQpbGOd3 zGd`>U>?|nUF&zNHP26km>u`YAG7|3fbT}Z~#J%>ucJF}y0N~HHeIX<)ssI2007*qo IM6N<$f;$#9e*gdg diff --git a/Client/Assets/Resources/Character/Test/Body/Body_Down_1.png b/Client/Assets/Resources/Character/Test/Body/Body_Down_1.png deleted file mode 100644 index 862aef064d0854620a497608db2d27a462dddb5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1744 zcmV;>1~2)EP)Px*ib+I4RCr$Pntx1{RT#$~2bfSvh9!|u8D2#bGip*s%lQKd2-%n;%$3$?=7c0C zR!fIX8?7i|>0*MllriT<3>Y9a-N?cfnHZv1G6O{{$shw$8SOdnyq@SuD05xXme+*5osMEINXCWxt1lF2V~+&tr7w+p0_~=7zH>NUil^>3QPr{^gO?K z9soY)BSdM(r^77;fcI)*!ZJ9~(gHI=LZGB{pDY#dWT4R3v!h73WdX=ym%G78An}9Q z@KJ#2fbHYd=iIIbOiKY=Bp!JcB}JOLP93dNJ)brwQqwjzF-3MNu$1ZYf-lo80)QP` zQPF+tatfr4iU9mp|1ArBt;R#p6OSqLP{h*^8lMUiefy6^QQ~n;LLz_wtk_y09cu*O z5nFJ7xMpWd4Ay04!m8v%6_di^5|teq{bFxr0Qe@t`@#V%SegXk&&05GO2^*^S?oSD zB?YpJili%C=}-s79RX@PtQ$6LmH}w{p%T8?ljnB+n*t!{i5M2Dvh&~1A8PVGg+=M< zP_unIELxokaIISnV5}e1?99Juw{{IccPA^H_z18(08)kv?QU;{oQ#*@zYBlBZTH;^ zFm616x88ma05<^OYL{f6k@GqD1qK6x#fEcYvs?twK7eU}4Hql{csq@Wawwj-3_w8p zjBU9R0MX)wrhpOv?_(AP1K$G%@x7`GLm$1bY@)m`6aXHB$!pdFR(06;g(HBK^QXhC zsKti$AFn+CyAPgJ&4Ux*7pdaxH?6k`A^>Vi5D4LN(@(5B5IH;g3#SQTk4fTj zED5K9mI6TD*HT3w?8i>Yy5D~zL1q5dC#AAyw%OBE!g&J`5QG#$dH`w)cS-C0V$WwX zaWB328oMvAE{3@1WcFFlCMa?q%$yOX0%i#Sdg2>TG(lV4VU;LeMZi7&Oguv9__I?t zEfAJj5ZsOcEdV5*_v*m|M_~TqxhjzeK}$SuZ&?75bHe+QGe1&^((=AL0PqE7L2x+& zQ2ea;S5>*G<$V;O2S6|GmG*-Hz;_-m+vU=+=rRCYI6=UdBMfRR3zHa}4SPM@iVyYKX44CuY?{9(dv0Ll=yg@*R+&)oue zrt`;IY|K)a7%)k9r&o4d>bM9Mm0wAZF$J)8NJ`rT_U2|`>lQWPx*YDq*vRCr$Pn14)GRT#$~=Z^`MX4rJ3WQHi3no&uaEmw$yrfkd+=9=Va<Jd#>;0z2|+s z0_UHX_nzmRd%mCN$9Z_$PzxVzTDX2{1<)D+5g?E}Jhh>!vOJ_{^Rm{Bw2%(vW@EO2 zfP!T!XztWpYAOUTYu%nPtN>U5AEqe~ysULA9(EA{kdzQd)irfZiUI}@%35ClkOkmC z0D$2p3S{pC0IzqmwkhJn76A}|&5`@E067(Ic2KP2p#q=_e^Ax#y~ZNf*haD-)%!d* zI(3xzQx>QL0Z(IWEiVh07HKqTjK2Zs#Jd%)!q9;*4Z(N>r~n{7n8$9&s3Lx=uB1^D zUa=xw^>o>~Rn|P9O>Db{e(1A+p14#(MaTMx@97Ko`nv|md8~RK0%sKzSdpNcmjPiu zr`Hi{OF&5Mm*Bq?(0QLv4G}mr#ADo_G&~?3cph_X!w}$kj4Q{#rS?6a6n}r$G5z)d z@b{Irbf%uDcFPJ{JZG8^kT-9sfY3fRk-A0^-QE70cn08Dq!Ofx0^C9~Vc(n>SiIAx;*r zvx80Y_*_vdr_%zizlRcfUca&m3oQn3=I2vRR)&p9(S~B19gKdiIW7S3IQe}keYJL(=PNKQ z0Ae3YvpglPwhs!#x%0ELsc`*z>ys{=wFkwWF?KsNPBZ7;UI1iIT|9N17B8Aj70W)Q zl_pT~TMhyrUM0&uZ{bo4fNAkYQ$PhED-sZH{2$;#zGZ^z58hXYDeoHv zfNL;o$_&xfVaNvufJr0z(ZJy&UF+Xhxs6uuIAq%g8=!mKQ23VriXZ^+P(c8~xr0B7 z>Acso9YHK!e!Xw#lK6-v9&1@RFZ2}v_P$OPgQ(eaIAHqyH^$n`-~MECz_WzGeQm;J z0}~L8G(t`QDvDNG=Uub*^8j%#zx1m3zO{S>TvbJ9?|T7&7laE!$PobX1IJ9Zg(ZtubJ_`jQ{1ceHv@oo?%T35q-!x` z05~{9z{>%Hhc5TM0+6GC-^1?>RXq0b1b`vnms!BT_rLzVNPT)I*@~Yj07s5i(>-@Z z3kLjNFTV_X2B3y;LVSF~rls=;ce;G7rKgRft})#lE4?~#=Im)IDgDxVj1)lckU4D* z)zsD+JGZfo_@oS=?dAVy=JM^900@e`uNy^0MNxfyebCR7zn=~O#*LHj0YEVz6n~g+ ziO-q8jvkEfPx*c}YY;RCr$Pntx1HWf;dF=Z}f~Fw>?(r82yxq-Io7#?qA{0Yf(C80MPfXzGL{ zC-y@bI!#<*>eS@~*HXru8#!dC)U=s}D>5-Pk*q*Tmt>ZS^T(*~dwmY?J?C8R;oSG! zj=}p6_nh~~dA^_L`@HA9cXXpp-nw;i{nQ1Z%K;%E5EC2MT77V@Ew=?T*NQY-L0MUt z$3Q^-`puL#Ka)BNA(**VV{{Y%3*cZn0wI{WR>fmnNB~58BB-XWp+hcU0CwiO0)Q+4 z0RaG-6&J|a2LPULWo}2rJLUigz~ZQVS%6#$?FEW?-1GqG%CA&?q*j@8l`SL-(r2Ih z662tUFIPz^!31M~nOK2XL3)h)8V`_R$0 zy+EN0909=ARUuy6HzWv&6UHhl1Em1u?5h;7hoG_y907pZm2LmHCxX7a{Td8p_dxw9 zhy1PO$~Hr#01!O8KrcF22=aWDZvv$N^v72@=s#|Br-@O6X;oexO`Y+o-$d`(UZnM7 zevgWo^v&=U^vtyiY8f*}Tqmrob@v`1tAmIG$Ippd_w~F*vOwI^L#p1f*#{8%!)iBa zO9BGQNtFwfIY6I%M2xJXA@hI$acGP4^TjoQFa(CgW7s9gJlc)MFRACyXT@hgNLKVF z2nhfL4Pk{#vxI=0W$P$1DU$|-c@ql|$TZ4B9;1hVv0wF0(A=QH1xf&zWuK#j3uN(p zpCRBHApDJa=jk)r9su!Ao_rit~} zWWE&iX6Tp${AFG*4iJ8+IjC7*?w8#nL%`Y>TZlf+zJmayBu}Rk4GlCZB7(|x?a*{0 z!(8{cX*P~s0O8m#Tn`|S{mru6-aP<_neP3H%*|B}Kv38S7Zet08RDJ4qO8PJ+o>bf zhWjJN#h8vwNJ%#UP*MMQn36p}1|TcI2KZCW7sC2xO@`o4JWA%_=;y?1Q*J8i-%$Xt zD0cS8JVQm?YYGaq_!s2nQbt;efk|;`nPD6TeP7pjX8?F%S}KJ<6))cF44`mzz7U$5 zo=ycNCE8!Q(rh%v-TjT@aBy0bcV_~CLh*iIwS=nHZ=lK9*;KW5Elr-2Np$_H5kRj# zRJCby+qn7jC};6w`W6C@lfr2WGA)@)0Hgyp=_C?N6fK_Y(Cm-41+j z-u(9q!|m}oE4{~NZYsq)0sv)zhEhO7z*o;VwtLX=hXk*`K7+h_2-d?|XsWWW6aZd> zY4a9}Qym%yj?VxvYto}MI(CYM^m~UKJGhUw?*GBC4*GCA$T_wN(SfL&SAY3~6 zt?15~o9-7x;YRPdq2I_SH1U|r!g-?W0q8;09X;hE`rX%)4G`Y^V3*H5&)5+L;jRRr z&%Ugps(6dI{Ak;UKH^?^`89F9dv7Tv#-+78W^%@CQ^%-qfs&J;KLE#1oTR4eLk97z zrvC$dg?K<{{_V1vYn2G1{>=dV55VQlV zX5TIV5OdN6K>>&vH>Nc$_kBZF+4^$r`vc(bbs&#t7dTN0wgEu==%m@EwP{xS!2k&4 z0zB_n`4(H}0^0x(6hpwn0fXD;CF^MTuxOvnPX&O}XKLvAbnh?AX#8Be;;}|h02l)P zV*@Zau;2f>N;}srBfQu7^_LJojRy1|=+E(n`xl!pP(|e@;yy|M=Z4g*rF8#2eYCOs z++hA=BxnF;iae2#tpL#d`rou@1ceVCNMT`N)Y8%t@Nd((3mUN1b6=!ez3vhK z>gwy2#;kNP83rJfy_YL)Wh~!Lk3>FXNw^H?$NHbCc*zX0M#{nh<>Hl;Kzp7B1oZdo zJH$4COP9}zN2ty`$L*K{WH95SC$`#kz~Pz$j>hQd;tT-*Ebo50f&U8tC5zlq!;O4sLZ4HoKC?0j z832Z$4}v#Av-@`Ix+C*K3ZNr_g=%aUfKZWk>vOss;MUB9Dy}XEgo?CVpVR3b@DG2r VK7E`+=W_r6002ovPDHLkV1gnQKmh;% diff --git a/Client/Assets/Resources/Character/Test/Body/Body_Down_3.png.meta b/Client/Assets/Resources/Character/Test/Body/Body_Down_3.png.meta deleted file mode 100644 index fe35aa4..0000000 --- a/Client/Assets/Resources/Character/Test/Body/Body_Down_3.png.meta +++ /dev/null @@ -1,117 +0,0 @@ -fileFormatVersion: 2 -guid: 0a4e42651d5472f429a1a7616d901b54 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 13 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - flipGreenChannel: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMipmapLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 4 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - customData: - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spriteCustomMetadata: - entries: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Client/Assets/Resources/Character/Test/Body/Body_Down_4.png b/Client/Assets/Resources/Character/Test/Body/Body_Down_4.png deleted file mode 100644 index acfe4a797b6bcdc126bf74b8ea9ced2f9fe4ea2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmVPx*ph-kQRCr$PnSV@GWf;dFr(!t-$;-+V{P@$M>Ee_nv#td+rW{ z_n&*ud7t;3=lgk{_jw;KgQ%a6LH%4m1q49+%!HoChC09AWo50I;QHm1nFn(l2*_Vo zOnFPQ$X5tf)|&OvRsdW8cg7b8R@Ryo54(T>h>MA$rq*_!vVa5dXRRXuhyvgc0AQHO z0x|jkz}K5u>x+0>GoW7sP>bhL5wpNkq);?5c=W~fd5co0aqoU0f^BT#orebML+i*gWjU8H_zAeOpv(^Yyp71TTxf*CfZjB zYI_kv{-#Q4#ZW2$L{DsDL=i2ATIt!RpY#ce(R!IDfm8tM{vANnB7SRXpt%cQQZii~ z>DsLum3csWe(+}caoh*=@TF=hIX;eEC#~M^>>42MV;=ck%_r&BplbwyZ|3JKnIO(% zUE{W5H$a%r9CJi@Bp}32h;iN)(2G92{_DzMI(@W-f+Aw6t}Z972ZsIjpM zAlUFMLF6&6bbLoak&m$N-w#Xb8vr04<6Ji}@r5gwvFn^wMHIil)$NG`(HCvh5V&~p zXtdfEOQ`{#qOTUuod<;Ilq?z%?7Ab07j52s=$KLi5cvm=yu+?BWE4Z&0JL3nMPH1( z7;ON+R>0QqW+xU+{tRT-nyjZR7eiYCh~iV{Eue$#?KCkeipndtDO&*$a5C`JH?ji+ zh(;mBCo=2HYzG5?lX_{b-uK7^E?!dLaBb;dYYY` zP4#Qn((G5Vh%R?&0SpbH`p=55+bvx})OCS1PGSZ)9spMcN4w5+P+`uC^xx^<>4s5v z5DmM9Xoyk0C!(uFbm^jEpHuh+g@i{Ez+&K;7>>&TUI(xZFyOEP;O%8hlvnYbOD_c2 z=d3PL0LT_EbqlBgh%sha(EE3QhuCYTkot(eddP~tQ~)>z)0eDZT^)w#H~=h~HGwA2 zoMT%5frcHlY3Cu$bMOFkk7Wg~JFf@=03T`)fN;L$CpMk)Y6cCy{I3SawV^js;is;~ zX?X1Yig>K$!ucY{15kr#-FMhc@Q1I>(*StulM1(cF;mBDggX)dPk+7qZa&yTry6(D z<}IJQO~3Hm%j~+Uu8fis(%E-Co7tI*4Y!SqERfO(>H&c8NfTqKzGQ<&7*`Z_dngkR z2%Udi&=m?$Mi3kUz-;t)?$|@K=1kX!1Oz?t+#UcT;%BgR0ID8VAz01;BLM2u_ZI*J za|i&yGfP%2umm7}+LWHjDT_6cfs+{G-ZuhZw82GtPg#I>9jM&k_mSu~050B0fV%Km z0U&09(fj;`;5Ps`!Xe=0$OLf&0sw!nzvAJqB>)@(ewqdh4&cwfy9hsaBtNr6IRTOq z=hKL=k%mW_dg5H?S*ou2n%%}0sQPL>;YX9(ZVpjQ`FpMWG;SGyo}!rO=$`FGt61v` z2pA9)apy=14i2X7?ryK2r%s+#fI&Q3=gv7_-(YY9jO@Wu%3vG`*sZ*Ih<${-T^EnCVGWhPYirNtIAmWWd6(IV7XBMb)FYbGVi zUiNK7{m5X(mN8~|@1FPlynj5;{rTMII_JL6`Ci|1UFUP1>q>KSuo4#7F8}}#wz0Nw z1^{LP^-cJAp*C>7QVtTZ8_rf{pt4uyH#FeBVP5 zWTBV#NE%!lejRj9p*CC0$`5qVUsxvfXFK0X)#+_HaV}`2=2_P#MPa}4;((UA!4_l) z?)z5m&a3Ye(_51}?~SO3oBaFqsnLDg#?d3v0ujuPG&J2kJ0Yi*5>R;=E;v>t6cz zf7Mh8aqpeKbEe^Z`q#&EV{UuvFrgHL;eO7O4+b%9KOVlKrJmH!VU4j|Zg5Me=H>XY zriZF*nTLIO7j79|fJyzGz9lof)K|{sARqWg*Ck;|{h(^Tszm?MIt+Eu?FhRgZ7E34 z_SHoMP?>VxeXeD3T&WV5DXpg;@cWs-6T_z7aM71b;+?$$2#U1xte(-x0OK8=yh~~h z)u{0M^HGCaeLYPG60HqS6IwkRC~Yg(lho}%s)dQR$S%p4@GQpc;&4?`}g!_!6`EQDgO0<^a_yuT9Fw52V5!OxYfH1~z z_JS>{>STJ}xc%iZSyC`W{5M2A*_h|`A|k83@6meEyol@jNrMo$=!w*B5%bCGpg!~k z#PbcRogVp1I}1`Amf94892(d0R;ph1#}4zIEGU4dT2SUGk_iF~{-?7jKQ5u+q1Vuc zcNKf87FbY`vFcy>94rYFSejhwpl+heb)ehN==q{C&1KSA`4@OuY~S(wS*J9`cSPhr zK7MD=IKdyW!~WP2w)0{h2DX1+v+FuJn*z_69!$Y!Q5`={5WD_W4@&m|#mk%PVo`?u z?30wpdz|hu%#k_rCXxHHES6bk2WC!1xDiDzv5bApFf0 z=*rA|U7Jc_L%@wSu?;z5vu5o;l)s!@wrug8r+cg9#l|YSVO=1vn-N{T`ci*Fw;ekiKvUNgS+1sOK!sS!hz~OCuxL{s7!zT@UFRB+_yk!s{hoCUo^i!Tk42)vOiJBBG^2$Pr#EmD7TNPoij;9I z(AoF-SOjR~aT+u_-JoFKN=FXd{6Gu8$5FZ+xi7erH-fF9%1%}`F_@<=Zb@kpYi7-S zjHL33EUi;9N)(lC!e1`#*H;=+7DNsob6XJu)fymwB{iwPJM|W@eb#`BepQaD=R#XS z{+KJdl3hn&jGZa;iDfHZqxGADp{^3kc4%C0=5}s~>RC zSCV({03`d-($r-Nry%SWZ>MwG3sRi}KZs{}b*zc$hvSs&_!8eYxjg7Nd zyyusA@XS6c&jZ<V5;U{zASe}nkISJvrKveQ zP7x|Lo|*Dzusi->(Ge_(N^wXTS5+$%!;Zo{5DPQ;wsnJuaGFyw;bA)I6kpX;SX|dV z6+~XwWtY6wa9d0SBYHW?(ZNL}-rPK~yM&qmR09-c`SWXIs>j>oX+1HbTI4+;tt?LfNY*|TTQ1IPnS z%WJMxI-45n-5P_kacQ5+XH0HZcQ}JlT#ffpptxBpFXbPF6nkDF{5N>YC1&w1P)029|D$4C)qU`ONwYuc3UBS6}Qf~I`e6qk+0$8!8o)b2H z>?Bk=sK*6manVMzty}I=5zQJoI^}sBH$m!y_X46t@~NXHmMquvY1n*@@YNx4qG@0I z`a)Bbalmb#se#>_9f6K(+77 zW+(RnY%BT%nEC!_5m?BeAwx#7rZ_X@#3eWga_8{H#*rc=U1m|%Jo$?q zg>SaC#*^gHBd>yAZw8JS?gFKiM)8xmE`StVt3_rX8BMV7vkuqzWJ4T-rBp}8D=-^+ zxS+7?L6l*@Zc8^7qoC`Zxk_Cmb4{cn6um>~Ki+osTu5FVhc7S{87b6Cqlpyl#O~JG z8!f9lezE|(w|Tew#=LKHbXnyATjG+Yd^-|x<%p-Bk4wmR0UAlcw zN#Xdr+Z*y{DW`~yL29pp$%C=k6D2|-=1aM_-bjda{VtPU)TP^``W{G6zZ{eFok1RJ zy5zxfsMe_#E63E!OA(|wO*c;3&mRqBwyY^?r8RW1l@i2&LanA~(aVE!2&dgu3z69@ zf=;Rxap>8dZXT1T^hati-kRFB^%WhgRr00!`XpU?M1NiO6)!K-Z@C9DUS6Rv0degS z?}cj#5sa5tjSEd(Sq`Z+3Ej0OUQD=>!H91Mrl0pRtSpo z1f%>db9a_{>ljX4DI6Hou|H7|xq>DYI;k$m&1?4HOS7b&>nwIqlZ1{lxAk%Pc}SOK zr?s>yz6^?pkjr)j#T*LwM=gLh#`fE5A%CiJ7#GEg;E6x&%N3?5LTf_aT}cS+hz&(GU54Y4(TuxVl6iyxgHd1l^!w{>K{TkHd7O_tQaE?05C9(~ z_N5cqNF^nv<+f$FXRAXv~j%D;TDiFL@WMTK*}yf9P^AtOTnKs0~oNb42#s!Qv7UaDmo;x|C zt(Wwk*^F?N{#1w?3b6+_W6#D|y{9TAKE7>f6BY%7c z+ZtDzDzHjrY;nO!ZqJdmti2TwzjoZ?-Evi$t-#qg;xAFR_X2&nW!{Mq;gQJgb`3~Ufxb;H5-u%yRrBEI7<+!p(+gwU6&yS2uP15JeHc;hJVn8DZclP%6JL^8dxs|J6+YC6u0V;OBen9fnN_kxJ_;2Q7vMCQ3l-QNJ6UHl!YoU&-9)Olt0hvG8D)-&SB4T(#SRR#Y57f>%nTmcDH{R=91&WE*IQNAu*uxxoe^PAs$?>Fx~|FXKW zeDv_C!w8|Ht!85lp%M&B=-?iBJw3MI!0S-byqY2O?eY96p*wd^AhiFKY_IF};77_; zWU)|ngf)s1KqGWvVU#ewAvErYo{W9tpWh!EScbmw^ISlJq%Qihxt)qD+beCpy}@gt zv2YPz7*QaIgl2dY4dRTBd}GW@VVqCf1|CE7hHot92Jw2Zit8#B*t3Yq32||?W;tG^ zGCzMFyTm0nsoD-PU6&G%&Xw`>GQe6IcIjH)c% z;@Ylj0>aF;V$DWooSm65G(^TznP{nEoHMeH+SI-Qo=!rDl7cqQrZRzG_J}36W05?h zF)-u>F4;^6W8)#W#Xv+N))`=(0-N-eR#{*D4|TD;%K%6l1ci-v`VvKjiA*oufH0~8Ibx?UTOxLl@lyP=RYA=B)G;E>a~|lFqHAU5PXB@86ZMqIxRn2feG!fFM#wt zc`<=ys;h@A6^lJk>mxGH2KVi}XeW`_{|$1ywxhsjaOfKOuxMBCQ8YXeLzhdTojw2U z^&5ot{LyMGwnumWe(IDEKJth>die4*Up~J7=63JJr9Yp2cPsb?KSuXX-m2{VwTqq{ oxpb%0EF<}K@~a?UJQ@BvaR1f5fA>Bno&2ZXT3Ts5xP0yQTl{2u)c^nh literal 0 HcmV?d00001 diff --git a/Client/Assets/Resources/Character/Test/Body/Body_Down_0.png.meta b/Client/Assets/Resources/Image/Square.png.meta similarity index 56% rename from Client/Assets/Resources/Character/Test/Body/Body_Down_0.png.meta rename to Client/Assets/Resources/Image/Square.png.meta index 78ce33e..a1e2cc0 100644 --- a/Client/Assets/Resources/Character/Test/Body/Body_Down_0.png.meta +++ b/Client/Assets/Resources/Image/Square.png.meta @@ -1,12 +1,15 @@ fileFormatVersion: 2 -guid: 4c104c5bdad21f64280d4ff6f61729a8 +guid: 3987fd52691151942a0279746bc41c15 TextureImporter: - internalIDToNameTable: [] + internalIDToNameTable: + - first: + 213: 7482667652216324306 + second: Square externalObjects: {} serializedVersion: 13 mipmaps: mipMapMode: 0 - enableMipMap: 1 + enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 @@ -37,24 +40,24 @@ TextureImporter: filterMode: 1 aniso: 1 mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 0 + spriteMode: 2 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 + spritePixelsToUnits: 256 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 + alphaIsTransparency: 1 + spriteTessellationDetail: 0 + textureType: 8 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 @@ -65,7 +68,7 @@ TextureImporter: ignorePngGamma: 0 applyGammaDecoding: 0 swizzle: 50462976 - cookieLightType: 0 + cookieLightType: 1 platformSettings: - serializedVersion: 4 buildTarget: DefaultTexturePlatform @@ -93,14 +96,66 @@ TextureImporter: ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 - sprites: [] + sprites: + - serializedVersion: 2 + name: Square + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 256 + height: 256 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 2d009a6b596c7d760800000000000000 + internalID: 7482667652216324306 + vertices: [] + indices: + edges: [] + weights: [] outline: [] customData: - physicsShape: [] + physicsShape: + - - {x: -128, y: 128} + - {x: -128, y: -128} + - {x: 128, y: -128} + - {x: 128, y: 128} bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: @@ -109,7 +164,8 @@ TextureImporter: secondaryTextures: [] spriteCustomMetadata: entries: [] - nameFileIdTable: {} + nameFileIdTable: + Square: 7482667652216324306 mipmapLimitGroupName: pSDRemoveMatte: 0 userData: diff --git a/Client/Assets/Resources/Prefab/Entity/BuildingPrefab Variant.prefab b/Client/Assets/Resources/Prefab/Entity/BuildingPrefab Variant.prefab index 066190d..a0d1fcf 100644 --- a/Client/Assets/Resources/Prefab/Entity/BuildingPrefab Variant.prefab +++ b/Client/Assets/Resources/Prefab/Entity/BuildingPrefab Variant.prefab @@ -76,6 +76,7 @@ PrefabInstance: - {fileID: 7300440714681954677, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} - {fileID: 1724818962207668775, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} - {fileID: 1550000129210799929, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + - {fileID: 5281521133329697568, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: @@ -105,6 +106,17 @@ GameObject: m_CorrespondingSourceObject: {fileID: 2838206730318674270, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} m_PrefabInstance: {fileID: 7193170239846001519} m_PrefabAsset: {fileID: 0} +--- !u!114 &5615006624229444611 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3332598847335032684, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 7193170239846001519} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8035315966857772658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b20b1846b9ef47db83c2ac8c4c4e82cb, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!212 &6103973223718413091 stripped SpriteRenderer: m_CorrespondingSourceObject: {fileID: 3992139212329961548, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} @@ -130,11 +142,13 @@ MonoBehaviour: animatorPrefab: {fileID: 2113064398104960506, guid: ea9af70ce0f4c8b4a9de58ac63074156, type: 3} imagePrefab: {fileID: 1922746734790246249, guid: a6657f26d735fab4690c8185980fda29, type: 3} healthBarPrefab: {fileID: 1196523683669800718} + entityPrefab: {fileID: 5615006624229444611} direction: {x: 0, y: 0, z: 0} body: {fileID: 4949477718940635697} affiliation: canSelect: 1 - hitBarUIShowTime: 5 + currentDimensionId: + _hitBarUIShowTime: 5 --- !u!114 &6487788869574860317 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Client/Assets/Resources/Prefab/Entity/BulletPrefab Variant.prefab b/Client/Assets/Resources/Prefab/Entity/BulletPrefab Variant.prefab index 2f66473..2a38c32 100644 --- a/Client/Assets/Resources/Prefab/Entity/BulletPrefab Variant.prefab +++ b/Client/Assets/Resources/Prefab/Entity/BulletPrefab Variant.prefab @@ -71,8 +71,10 @@ PrefabInstance: m_RemovedComponents: - {fileID: 7300440714681954677, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} - {fileID: 4717642781780051128, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + - {fileID: 5281521133329697568, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} m_RemovedGameObjects: - {fileID: 1328271255896522146, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + - {fileID: 6276067436382167109, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} m_AddedGameObjects: [] m_AddedComponents: - targetCorrespondingSourceObject: {fileID: 887327274103887133, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} @@ -99,13 +101,28 @@ MonoBehaviour: animatorPrefab: {fileID: 2113064398104960506, guid: ea9af70ce0f4c8b4a9de58ac63074156, type: 3} imagePrefab: {fileID: 1922746734790246249, guid: a6657f26d735fab4690c8185980fda29, type: 3} healthBarPrefab: {fileID: 0} + entityPrefab: {fileID: 8687677644466399534} direction: {x: 0, y: 0, z: 0} body: {fileID: 8200005766896563996} affiliation: canSelect: 1 - hitBarUIShowTime: 5 + currentDimensionId: + _hitBarUIShowTime: 5 + bulletSource: {fileID: 0} + lifeTime: 10 --- !u!1 &8200005766896563996 stripped GameObject: m_CorrespondingSourceObject: {fileID: 2838206730318674270, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} m_PrefabInstance: {fileID: 6246229038671744578} m_PrefabAsset: {fileID: 0} +--- !u!114 &8687677644466399534 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3332598847335032684, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 6246229038671744578} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6557095110834133855} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b20b1846b9ef47db83c2ac8c4c4e82cb, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Client/Assets/Resources/Prefab/Entity/CharacterPrefab Variant.prefab b/Client/Assets/Resources/Prefab/Entity/CharacterPrefab Variant.prefab index 9b0023c..829bda3 100644 --- a/Client/Assets/Resources/Prefab/Entity/CharacterPrefab Variant.prefab +++ b/Client/Assets/Resources/Prefab/Entity/CharacterPrefab Variant.prefab @@ -60,7 +60,8 @@ PrefabInstance: propertyPath: entity value: objectReference: {fileID: 1108911649520063592} - m_RemovedComponents: [] + m_RemovedComponents: + - {fileID: 5281521133329697568, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: @@ -88,16 +89,29 @@ MonoBehaviour: animatorPrefab: {fileID: 2113064398104960506, guid: ea9af70ce0f4c8b4a9de58ac63074156, type: 3} imagePrefab: {fileID: 1922746734790246249, guid: a6657f26d735fab4690c8185980fda29, type: 3} healthBarPrefab: {fileID: 8215007830330368681} + entityPrefab: {fileID: 3420474218334607780} direction: {x: 0, y: 0, z: 0} body: {fileID: 2750404322221410198} affiliation: canSelect: 1 - hitBarUIShowTime: 5 + currentDimensionId: + _hitBarUIShowTime: 5 --- !u!1 &2750404322221410198 stripped GameObject: m_CorrespondingSourceObject: {fileID: 2838206730318674270, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} m_PrefabInstance: {fileID: 92380775595425480} m_PrefabAsset: {fileID: 0} +--- !u!114 &3420474218334607780 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3332598847335032684, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 92380775595425480} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 943601596972592085} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b20b1846b9ef47db83c2ac8c4c4e82cb, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &8215007830330368681 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 8307348883874536545, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} diff --git a/Client/Assets/Resources/Prefab/Entity/EntityPrefab.prefab b/Client/Assets/Resources/Prefab/Entity/EntityPrefab.prefab index 956f38f..ebdbb2a 100644 --- a/Client/Assets/Resources/Prefab/Entity/EntityPrefab.prefab +++ b/Client/Assets/Resources/Prefab/Entity/EntityPrefab.prefab @@ -98,6 +98,7 @@ GameObject: - component: {fileID: 697189026367054479} - component: {fileID: 3332598847335032684} - component: {fileID: 1550000129210799929} + - component: {fileID: 5281521133329697568} - component: {fileID: 1724818962207668775} - component: {fileID: 4717642781780051128} m_Layer: 6 @@ -137,7 +138,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b20b1846b9ef47db83c2ac8c4c4e82cb, type: 3} m_Name: m_EditorClassIdentifier: - entity: {fileID: 0} + entity: {fileID: 5281521133329697568} outline: {fileID: 1550000129210799929} --- !u!114 &1550000129210799929 MonoBehaviour: @@ -156,7 +157,29 @@ MonoBehaviour: outlineRenderer: {fileID: 3992139212329961548} outlineCollider: {fileID: 1724818962207668775} progressBarPrefab: {fileID: 8307348883874536545} - entity: {fileID: 0} + entity: {fileID: 5281521133329697568} +--- !u!114 &5281521133329697568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887327274103887133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fbde354e0bcc4409b3378ee9b698ddc0, type: 3} + m_Name: + m_EditorClassIdentifier: + animatorPrefab: {fileID: 2113064398104960506, guid: ea9af70ce0f4c8b4a9de58ac63074156, type: 3} + imagePrefab: {fileID: 1922746734790246249, guid: a6657f26d735fab4690c8185980fda29, type: 3} + healthBarPrefab: {fileID: 8307348883874536545} + entityPrefab: {fileID: 3332598847335032684} + direction: {x: 0, y: 0, z: 0} + body: {fileID: 2838206730318674270} + affiliation: + canSelect: 1 + currentDimensionId: + _hitBarUIShowTime: 5 --- !u!70 &1724818962207668775 CapsuleCollider2D: m_ObjectHideFlags: 0 @@ -308,6 +331,18 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3249131573413190125, guid: c9e9ee0f8c58b5b45b2e85c7de8251b0, type: 3} + propertyPath: m_Color.b + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3249131573413190125, guid: c9e9ee0f8c58b5b45b2e85c7de8251b0, type: 3} + propertyPath: m_Color.g + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3249131573413190125, guid: c9e9ee0f8c58b5b45b2e85c7de8251b0, type: 3} + propertyPath: m_Color.r + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] diff --git a/Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab b/Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab new file mode 100644 index 0000000..e86f9fb --- /dev/null +++ b/Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &575440246232574994 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 887327274103887133, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_Name + value: MonsterPrefab Variant + objectReference: {fileID: 0} + - target: {fileID: 1550000129210799929, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: entity + value: + objectReference: {fileID: 1684624059175526519} + - target: {fileID: 3332598847335032684, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: entity + value: + objectReference: {fileID: 1684624059175526519} + m_RemovedComponents: + - {fileID: 5281521133329697568, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 887327274103887133, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + insertIndex: 3 + addedObject: {fileID: 1684624059175526519} + m_SourcePrefab: {fileID: 100100000, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} +--- !u!1 &841105155399989519 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 887327274103887133, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 575440246232574994} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1684624059175526519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841105155399989519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 32995e4c8e0d40dfa39990f0671a3733, type: 3} + m_Name: + m_EditorClassIdentifier: + animatorPrefab: {fileID: 2113064398104960506, guid: ea9af70ce0f4c8b4a9de58ac63074156, type: 3} + imagePrefab: {fileID: 1922746734790246249, guid: a6657f26d735fab4690c8185980fda29, type: 3} + healthBarPrefab: {fileID: 8409907229673894003} + entityPrefab: {fileID: 3009419556014787454} + direction: {x: 0, y: 0, z: 0} + body: {fileID: 2350608668399211852} + affiliation: + canSelect: 1 + currentDimensionId: + _hitBarUIShowTime: 5 +--- !u!1 &2350608668399211852 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2838206730318674270, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 575440246232574994} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3009419556014787454 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3332598847335032684, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 575440246232574994} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 841105155399989519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b20b1846b9ef47db83c2ac8c4c4e82cb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &8409907229673894003 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8307348883874536545, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 575440246232574994} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 605f185650fe46d89a6e0d60fb8fb11c, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab.meta b/Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab.meta new file mode 100644 index 0000000..04bcd61 --- /dev/null +++ b/Client/Assets/Resources/Prefab/Entity/MonsterPrefab Variant.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 90f616eda22821c49bd8cb9c3e897f05 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab b/Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab new file mode 100644 index 0000000..ab0ae98 --- /dev/null +++ b/Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab @@ -0,0 +1,123 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &2380275988296954650 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 697189026367054479, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 887327274103887133, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_Name + value: PickupPrefab Variant + objectReference: {fileID: 0} + - target: {fileID: 1550000129210799929, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: entity + value: + objectReference: {fileID: 3102709554251180267} + - target: {fileID: 1550000129210799929, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: progressBarPrefab + value: + objectReference: {fileID: 0} + - target: {fileID: 1724818962207668775, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: m_IsTrigger + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3332598847335032684, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + propertyPath: entity + value: + objectReference: {fileID: 3102709554251180267} + m_RemovedComponents: + - {fileID: 5281521133329697568, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_RemovedGameObjects: + - {fileID: 1328271255896522146, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 887327274103887133, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + insertIndex: 3 + addedObject: {fileID: 3102709554251180267} + m_SourcePrefab: {fileID: 100100000, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} +--- !u!1 &462504746097347140 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2838206730318674270, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 2380275988296954650} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1096543602564338806 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3332598847335032684, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 2380275988296954650} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3267391294614185479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b20b1846b9ef47db83c2ac8c4c4e82cb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &3267391294614185479 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 887327274103887133, guid: 6cd8b01a0f57372438dc30c864ae1530, type: 3} + m_PrefabInstance: {fileID: 2380275988296954650} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3102709554251180267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3267391294614185479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e65cb3d0f8440c599399cefd9a3a5d7, type: 3} + m_Name: + m_EditorClassIdentifier: + animatorPrefab: {fileID: 2113064398104960506, guid: ea9af70ce0f4c8b4a9de58ac63074156, type: 3} + imagePrefab: {fileID: 1922746734790246249, guid: a6657f26d735fab4690c8185980fda29, type: 3} + healthBarPrefab: {fileID: 0} + entityPrefab: {fileID: 1096543602564338806} + direction: {x: 0, y: 0, z: 0} + body: {fileID: 462504746097347140} + affiliation: + canSelect: 0 + currentDimensionId: + _hitBarUIShowTime: 5 diff --git a/Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab.meta b/Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab.meta new file mode 100644 index 0000000..66a85ab --- /dev/null +++ b/Client/Assets/Resources/Prefab/Entity/PickupPrefab Variant.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ec84100729cd1bd4699fc15b3a09134c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/Resources/Prefab/TextTemplate.prefab b/Client/Assets/Resources/Prefab/TextTemplate.prefab index d3a00b0..d2ebf03 100644 --- a/Client/Assets/Resources/Prefab/TextTemplate.prefab +++ b/Client/Assets/Resources/Prefab/TextTemplate.prefab @@ -12,7 +12,6 @@ GameObject: - component: {fileID: 6803973761688315705} - component: {fileID: 7303780691383776844} - component: {fileID: 2137672851208466200} - - component: {fileID: -6983149199180571386} m_Layer: 5 m_Name: TextTemplate m_TagString: Untagged @@ -37,7 +36,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: -1.0921326, y: -54.256577} - m_SizeDelta: {x: 200, y: 0} + m_SizeDelta: {x: 200, y: 14.01} m_Pivot: {x: 0.5, y: 1} --- !u!222 &6803973761688315705 CanvasRenderer: @@ -151,17 +150,3 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: text: {fileID: 7303780691383776844} ---- !u!114 &-6983149199180571386 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 27210933623785530} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 diff --git a/Client/Assets/Resources/Prefab/UI/Bar.prefab b/Client/Assets/Resources/Prefab/UI/Bar.prefab new file mode 100644 index 0000000..4061646 --- /dev/null +++ b/Client/Assets/Resources/Prefab/UI/Bar.prefab @@ -0,0 +1,167 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5797149502888100339 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2529712523917175612} + - component: {fileID: 9163052883457021891} + - component: {fileID: 5309915153765986547} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2529712523917175612 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5797149502888100339} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6633399472656308268} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9163052883457021891 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5797149502888100339} + m_CullTransparentMesh: 1 +--- !u!114 &5309915153765986547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5797149502888100339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0.9424448, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 7482667652216324306, guid: 3987fd52691151942a0279746bc41c15, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 0.507 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7666974979659500467 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6633399472656308268} + - component: {fileID: 775118057073664828} + - component: {fileID: 789982864557509744} + - component: {fileID: 8924509912883067279} + m_Layer: 5 + m_Name: Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6633399472656308268 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7666974979659500467} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2529712523917175612} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &775118057073664828 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7666974979659500467} + m_CullTransparentMesh: 1 +--- !u!114 &789982864557509744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7666974979659500467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8924509912883067279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7666974979659500467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5026699f3a94f029628af90ccd8fa8d, type: 3} + m_Name: + m_EditorClassIdentifier: + image: {fileID: 5309915153765986547} diff --git a/Client/Assets/Resources/Prefab/UI/Bar.prefab.meta b/Client/Assets/Resources/Prefab/UI/Bar.prefab.meta new file mode 100644 index 0000000..d85c353 --- /dev/null +++ b/Client/Assets/Resources/Prefab/UI/Bar.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1b1aef36872c4f44a907f96bf813e8e5 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/Resources/Prefab/UI/DevMenu.prefab b/Client/Assets/Resources/Prefab/UI/DevMenu.prefab index 28a9f5b..e31c40e 100644 --- a/Client/Assets/Resources/Prefab/UI/DevMenu.prefab +++ b/Client/Assets/Resources/Prefab/UI/DevMenu.prefab @@ -457,11 +457,11 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 1 + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 m_StartCorner: 0 m_StartAxis: 1 m_CellSize: {x: 100, y: 25} @@ -610,7 +610,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &4227482396833377269 RectTransform: m_ObjectHideFlags: 0 @@ -670,8 +670,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c83e72721411938449d92dd48c76480d, type: 3} m_Name: m_EditorClassIdentifier: + exclusive: 1 + needPause: 1 + isInputOccupied: 0 actionButton: 0 menuContent: {fileID: 4435203021089737161} + entityPlacementUI: {fileID: 0} textTemplate: {fileID: 2137672851208466200, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} buttonTemplate: {fileID: 3166707847097429176, guid: f0afd08be12de0d43af753af4f618da4, type: 3} --- !u!1 &7647974983068761971 @@ -885,7 +889,7 @@ MonoBehaviour: m_HandleRect: {fileID: 1929317511491337533} m_Direction: 0 m_Value: 0 - m_Size: 0.99999994 + m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: m_PersistentCalls: diff --git a/Client/Assets/Resources/Prefab/UI/Equipment.prefab b/Client/Assets/Resources/Prefab/UI/Equipment.prefab new file mode 100644 index 0000000..46573c6 --- /dev/null +++ b/Client/Assets/Resources/Prefab/UI/Equipment.prefab @@ -0,0 +1,565 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1030546024980288463 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1157947551238829547} + - component: {fileID: 5463992534135031964} + - component: {fileID: 4239866054256778730} + - component: {fileID: 39290904923667451} + - component: {fileID: 9024135780612969828} + m_Layer: 5 + m_Name: Equipment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1157947551238829547 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030546024980288463} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3019988288342535868} + - {fileID: 7721553852364159343} + - {fileID: 5107399522308016876} + - {fileID: 8656654474110430578} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 44, y: 44} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5463992534135031964 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030546024980288463} + m_CullTransparentMesh: 1 +--- !u!114 &4239866054256778730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030546024980288463} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.26415092, g: 0.26415092, b: 0.26415092, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &39290904923667451 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030546024980288463} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7d651a3517184abcb4aff78629eb7946, type: 3} + m_Name: + m_EditorClassIdentifier: + textureUI: {fileID: 4546646434353196358} + countUI: {fileID: 2838284958729559819} + nameUI: {fileID: 7621879387603348285} + selectedOutline: {fileID: 8911733408486196626} +--- !u!114 &9024135780612969828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030546024980288463} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4239866054256778730} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1322051136596624039 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7721553852364159343} + - component: {fileID: 2363982704846067834} + - component: {fileID: 7621879387603348285} + m_Layer: 5 + m_Name: name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7721553852364159343 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322051136596624039} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1157947551238829547} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 40, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2363982704846067834 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322051136596624039} + m_CullTransparentMesh: 1 +--- !u!114 &7621879387603348285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322051136596624039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u7269\u54C1\u540D\u79F0" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292598747 + m_fontColor: {r: 0.8584906, g: 0.8584906, b: 0.8584906, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 12 + m_fontSizeBase: 12 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &3209011714410963536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3019988288342535868} + - component: {fileID: 7568224505238899076} + - component: {fileID: 4546646434353196358} + m_Layer: 5 + m_Name: texture + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3019988288342535868 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3209011714410963536} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1157947551238829547} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -4, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7568224505238899076 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3209011714410963536} + m_CullTransparentMesh: 1 +--- !u!114 &4546646434353196358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3209011714410963536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 620e16cb0aec3684db9ef80bdcc85695, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8911733408486196626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8656654474110430578} + - component: {fileID: 407204586558773978} + - component: {fileID: 1196719146505742501} + m_Layer: 5 + m_Name: select + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8656654474110430578 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8911733408486196626} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1157947551238829547} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 2, y: 2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &407204586558773978 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8911733408486196626} + m_CullTransparentMesh: 1 +--- !u!114 &1196719146505742501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8911733408486196626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 811d3d3bfa653494784ee8ed56956471, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &9083725956021694610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5107399522308016876} + - component: {fileID: 3215760353359771558} + - component: {fileID: 2838284958729559819} + m_Layer: 5 + m_Name: count + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5107399522308016876 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9083725956021694610} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1157947551238829547} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -10, y: 5} + m_SizeDelta: {x: 20, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3215760353359771558 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9083725956021694610} + m_CullTransparentMesh: 1 +--- !u!114 &2838284958729559819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9083725956021694610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 1 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292598747 + m_fontColor: {r: 0.8584906, g: 0.8584906, b: 0.8584906, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 0, g: 0.16973758, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 12 + m_fontSizeBase: 12 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Client/Assets/Resources/Prefab/UI/Equipment.prefab.meta b/Client/Assets/Resources/Prefab/UI/Equipment.prefab.meta new file mode 100644 index 0000000..2d78366 --- /dev/null +++ b/Client/Assets/Resources/Prefab/UI/Equipment.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d989d0eda9043f146bb606ec0fd32905 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/Resources/Prefab/UI/EscUI.prefab b/Client/Assets/Resources/Prefab/UI/EscUI.prefab index 170f8e3..ae31bd0 100644 --- a/Client/Assets/Resources/Prefab/UI/EscUI.prefab +++ b/Client/Assets/Resources/Prefab/UI/EscUI.prefab @@ -17,7 +17,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &1633840166558733415 RectTransform: m_ObjectHideFlags: 0 @@ -32,6 +32,7 @@ RectTransform: m_Children: - {fileID: 2054715303808414256} - {fileID: 5084767838786362069} + - {fileID: 2831061748208868200} - {fileID: 5683899746708222069} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -108,7 +109,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMin.x @@ -116,7 +117,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_SizeDelta.x @@ -156,11 +157,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchoredPosition.x - value: 399.99997 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchoredPosition.y - value: -184.99998 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -216,7 +217,7 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} m_PrefabInstance: {fileID: 861726664512651295} m_PrefabAsset: {fileID: 0} ---- !u!1001 &5901437432862894330 +--- !u!1001 &3476590699529562439 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 @@ -226,7 +227,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_Name - value: settings + value: mainMenu objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_Pivot.x @@ -242,7 +243,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMin.x @@ -250,7 +251,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_SizeDelta.x @@ -290,11 +291,145 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchoredPosition.x - value: 399.99997 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchoredPosition.y - value: -224.99998 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u8FD4\u56DE\u4E3B\u83DC\u5355" + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 4955394867221047595} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ReturnMainMenu + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UI.EscUI, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &2831061748208868200 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 3476590699529562439} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5901437432862894330 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1633840166558733415} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: settings + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 160 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -380,7 +515,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMin.x @@ -388,7 +523,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_SizeDelta.x @@ -428,11 +563,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchoredPosition.x - value: 399.99997 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_AnchoredPosition.y - value: -265 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} propertyPath: m_LocalEulerAnglesHint.x diff --git a/Client/Assets/Resources/Prefab/UI/SettingUI.prefab b/Client/Assets/Resources/Prefab/UI/SettingUI.prefab new file mode 100644 index 0000000..dba02d2 --- /dev/null +++ b/Client/Assets/Resources/Prefab/UI/SettingUI.prefab @@ -0,0 +1,7330 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &148287118678840846 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5052061354656426297} + - component: {fileID: 1130104450921003487} + - component: {fileID: 1638479685853257944} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5052061354656426297 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148287118678840846} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4406303159952873843} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1130104450921003487 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148287118678840846} + m_CullTransparentMesh: 1 +--- !u!114 &1638479685853257944 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148287118678840846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &253740060524144350 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4334665260776947963} + - component: {fileID: 1748158905204360579} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4334665260776947963 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 253740060524144350} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1490082715194364190} + m_Father: {fileID: 588209722058685216} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 200, y: 0} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1748158905204360579 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 253740060524144350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6877249168942402495} + toggleTransition: 1 + graphic: {fileID: 1055966928654991812} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &271663995629942563 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3397315055439124616} + - component: {fileID: 2864693275070899375} + - component: {fileID: 1813378545169362136} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3397315055439124616 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271663995629942563} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 309587007121658836} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.2} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2864693275070899375 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271663995629942563} + m_CullTransparentMesh: 1 +--- !u!114 &1813378545169362136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271663995629942563} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &345719137521784645 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7318315172311564703} + - component: {fileID: 7115499585347098177} + - component: {fileID: 8836047353328923637} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7318315172311564703 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345719137521784645} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6889739598114313141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7115499585347098177 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345719137521784645} + m_CullTransparentMesh: 1 +--- !u!114 &8836047353328923637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345719137521784645} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &353577217967784201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1333189604804204447} + - component: {fileID: 680134148563772937} + - component: {fileID: 384999528408154578} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1333189604804204447 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353577217967784201} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3836861798404527932} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &680134148563772937 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353577217967784201} + m_CullTransparentMesh: 1 +--- !u!114 &384999528408154578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353577217967784201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 3 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &422785614586149131 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5092041354160900864} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5092041354160900864 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 422785614586149131} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5290454820859113095} + m_Father: {fileID: 9141478635235767703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 28} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &448284192659918839 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6953457992497543611} + - component: {fileID: 4616727996698395429} + m_Layer: 5 + m_Name: Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6953457992497543611 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448284192659918839} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1145620884774714605} + - {fileID: 428523437888771562} + - {fileID: 255712542437487411} + m_Father: {fileID: 7107798964162086518} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4616727996698395429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448284192659918839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1986990729449444993} + toggleTransition: 1 + graphic: {fileID: 2288268014088957173} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &675834759292362998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807220599302013032} + - component: {fileID: 3166955263631569040} + - component: {fileID: 8009962731176257063} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3807220599302013032 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 675834759292362998} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1368576192826021356} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3166955263631569040 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 675834759292362998} + m_CullTransparentMesh: 1 +--- !u!114 &8009962731176257063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 675834759292362998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &731014230302852672 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3515912850959171173} + - component: {fileID: 4363400615542407018} + - component: {fileID: 4486507006542201377} + m_Layer: 5 + m_Name: Item Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3515912850959171173 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731014230302852672} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5290454820859113095} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4363400615542407018 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731014230302852672} + m_CullTransparentMesh: 1 +--- !u!114 &4486507006542201377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731014230302852672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &765199557850469957 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2900881902830087411} + - component: {fileID: 7470387883473358909} + m_Layer: 5 + m_Name: EnterButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2900881902830087411 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 765199557850469957} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4469608227242572628} + - {fileID: 8320059764338655046} + - {fileID: 6688065346470750453} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7470387883473358909 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 765199557850469957} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 8 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &820489938219338804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8058820546803683956} + - component: {fileID: 2026195252075719491} + - component: {fileID: 8067857281417314059} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8058820546803683956 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820489938219338804} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3601227794910465630} + - {fileID: 5877050460090954826} + - {fileID: 6826727892685997569} + - {fileID: 5250766324582680904} + - {fileID: 63467561189681800} + - {fileID: 588209722058685216} + - {fileID: 4382446647419696272} + - {fileID: 8372402552497025236} + - {fileID: 3582015553262914482} + - {fileID: 8669098655635635614} + - {fileID: 2900881902830087411} + m_Father: {fileID: 8893679260950019636} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &2026195252075719491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820489938219338804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 100 + m_Right: 100 + m_Top: 20 + m_Bottom: 20 + m_ChildAlignment: 0 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &8067857281417314059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820489938219338804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &997896242481145166 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 263079864809246157} + - component: {fileID: 429121075170852349} + - component: {fileID: 1516841646207679801} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &263079864809246157 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997896242481145166} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7138819083096972869} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7.5, y: -0.5} + m_SizeDelta: {x: -35, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &429121075170852349 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997896242481145166} + m_CullTransparentMesh: 1 +--- !u!114 &1516841646207679801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997896242481145166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u5168\u5C4F\u6A21\u5F0F" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1067866165308801763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4083017304582584480} + - component: {fileID: 1382496721822527789} + - component: {fileID: 7049343221700167469} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4083017304582584480 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067866165308801763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7195980582500054799} + m_Father: {fileID: 4984170088431757184} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1382496721822527789 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067866165308801763} + m_CullTransparentMesh: 1 +--- !u!114 &7049343221700167469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067866165308801763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1181101207662022384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3836861798404527932} + - component: {fileID: 1339205706517614994} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3836861798404527932 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1181101207662022384} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3148395403631912981} + - {fileID: 1333189604804204447} + m_Father: {fileID: 3714581752140258541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1339205706517614994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1181101207662022384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &1246071642582779274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3057017655207069271} + - component: {fileID: 1461318095137577927} + - component: {fileID: 7173985023301790406} + - component: {fileID: 2316664195302985391} + m_Layer: 5 + m_Name: Scrollbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3057017655207069271 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1246071642582779274} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4043402461673844551} + m_Father: {fileID: 5877050460090954826} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -191.49998, y: 0} + m_SizeDelta: {x: 383, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1461318095137577927 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1246071642582779274} + m_CullTransparentMesh: 1 +--- !u!114 &7173985023301790406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1246071642582779274} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2316664195302985391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1246071642582779274} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2162477753957914456} + m_HandleRect: {fileID: 1810958936199593402} + m_Direction: 0 + m_Value: 1 + m_Size: 0.05 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1567507520951352165 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5350501975799247052} + - component: {fileID: 8603701695367439681} + - component: {fileID: 4983233090522469422} + - component: {fileID: 3880521380967476533} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5350501975799247052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1567507520951352165} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9110849115250756824} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8603701695367439681 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1567507520951352165} + m_CullTransparentMesh: 1 +--- !u!114 &4983233090522469422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1567507520951352165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u5355\u4F4D\u79D2" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &3880521380967476533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1567507520951352165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1618735161139119284 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9110849115250756824} + - component: {fileID: 2115525021469817271} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9110849115250756824 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618735161139119284} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5350501975799247052} + - {fileID: 5152640037440921936} + m_Father: {fileID: 7301635085284733744} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2115525021469817271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618735161139119284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &1622511295434954087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1145620884774714605} + - component: {fileID: 5222158174975082484} + - component: {fileID: 1986990729449444993} + m_Layer: 5 + m_Name: Item Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1145620884774714605 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622511295434954087} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6953457992497543611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5222158174975082484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622511295434954087} + m_CullTransparentMesh: 1 +--- !u!114 &1986990729449444993 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622511295434954087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1745158369068465098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5841364601243342536} + - component: {fileID: 3793312139079454335} + - component: {fileID: 4095769128195836246} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5841364601243342536 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745158369068465098} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 295539933603177805} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -15, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3793312139079454335 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745158369068465098} + m_CullTransparentMesh: 1 +--- !u!114 &4095769128195836246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745158369068465098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1844675408093020306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1490082715194364190} + - component: {fileID: 8648252367245246519} + - component: {fileID: 6877249168942402495} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1490082715194364190 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844675408093020306} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2123058148642916929} + m_Father: {fileID: 4334665260776947963} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8648252367245246519 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844675408093020306} + m_CullTransparentMesh: 1 +--- !u!114 &6877249168942402495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844675408093020306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1848849168133845688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6826727892685997569} + m_Layer: 5 + m_Name: windowMode + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6826727892685997569 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1848849168133845688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5845532954375859732} + - {fileID: 295539933603177805} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1852330405148574035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2547598892676201411} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2547598892676201411 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852330405148574035} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 634242415576092772} + m_Father: {fileID: 63360244224178367} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1945690849684890953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9141478635235767703} + - component: {fileID: 1137265189115331700} + - component: {fileID: 7681922278510775061} + - component: {fileID: 6254019723721085892} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9141478635235767703 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1945690849684890953} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5092041354160900864} + m_Father: {fileID: 7135623083979748633} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -18, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1137265189115331700 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1945690849684890953} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &7681922278510775061 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1945690849684890953} + m_CullTransparentMesh: 1 +--- !u!114 &6254019723721085892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1945690849684890953} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1960385950143705177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 63467561189681800} + m_Layer: 5 + m_Name: friendlyFire + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &63467561189681800 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960385950143705177} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 302567673854195513} + - {fileID: 4984170088431757184} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1971060523352575519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7107798964162086518} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7107798964162086518 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1971060523352575519} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6953457992497543611} + m_Father: {fileID: 3379054812730770157} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 28} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &2003844502392795890 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1368576192826021356} + - component: {fileID: 4535216129726192708} + - component: {fileID: 8370016880625545629} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1368576192826021356 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2003844502392795890} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3807220599302013032} + m_Father: {fileID: 1387738332983915429} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4535216129726192708 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2003844502392795890} + m_CullTransparentMesh: 1 +--- !u!114 &8370016880625545629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2003844502392795890} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2521308813618324157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5877050460090954826} + m_Layer: 5 + m_Name: volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5877050460090954826 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2521308813618324157} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4089829637003728499} + - {fileID: 3057017655207069271} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2564818680217512367 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4043402461673844551} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4043402461673844551 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2564818680217512367} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1810958936199593402} + m_Father: {fileID: 3057017655207069271} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2786872636774421998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3680955383656381233} + - component: {fileID: 9017511117435717050} + - component: {fileID: 4062940605113875770} + - component: {fileID: 8050889462025142423} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3680955383656381233 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2786872636774421998} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6889739598114313141} + m_Father: {fileID: 7656549798775245974} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &9017511117435717050 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2786872636774421998} + m_CullTransparentMesh: 1 +--- !u!114 &4062940605113875770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2786872636774421998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8050889462025142423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2786872636774421998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8836047353328923637} + m_HandleRect: {fileID: 7318315172311564703} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2886421888714640636 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 588209722058685216} + m_Layer: 5 + m_Name: developerMode + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &588209722058685216 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2886421888714640636} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6506878885246655889} + - {fileID: 4334665260776947963} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2967165359524329575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3379054812730770157} + - component: {fileID: 4567358589060156027} + - component: {fileID: 2210616032652031363} + - component: {fileID: 7668408435808433843} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3379054812730770157 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2967165359524329575} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7107798964162086518} + m_Father: {fileID: 926003197805526708} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -18, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &4567358589060156027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2967165359524329575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &2210616032652031363 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2967165359524329575} + m_CullTransparentMesh: 1 +--- !u!114 &7668408435808433843 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2967165359524329575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3223361325052726663 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7135623083979748633} + - component: {fileID: 8253585934020015950} + - component: {fileID: 3288805215473126971} + - component: {fileID: 869771048669666530} + m_Layer: 5 + m_Name: Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7135623083979748633 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3223361325052726663} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9141478635235767703} + - {fileID: 63360244224178367} + m_Father: {fileID: 7138819083096972869} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 0, y: 150} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &8253585934020015950 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3223361325052726663} + m_CullTransparentMesh: 1 +--- !u!114 &3288805215473126971 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3223361325052726663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &869771048669666530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3223361325052726663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 5092041354160900864} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 9141478635235767703} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 3120634399683941868} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3316031743481732750 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4382446647419696272} + m_Layer: 5 + m_Name: showMiniMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4382446647419696272 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3316031743481732750} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4154665771205055467} + - {fileID: 1387738332983915429} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4272417468456359236 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1387738332983915429} + - component: {fileID: 2665600169125004565} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1387738332983915429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4272417468456359236} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1368576192826021356} + m_Father: {fileID: 4382446647419696272} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 200, y: 0} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2665600169125004565 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4272417468456359236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8370016880625545629} + toggleTransition: 1 + graphic: {fileID: 8009962731176257063} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &4720486499607599114 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 255712542437487411} + - component: {fileID: 938394070909985485} + - component: {fileID: 7478674557773554051} + m_Layer: 5 + m_Name: Item Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &255712542437487411 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4720486499607599114} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6953457992497543611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 5, y: -0.5} + m_SizeDelta: {x: -30, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &938394070909985485 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4720486499607599114} + m_CullTransparentMesh: 1 +--- !u!114 &7478674557773554051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4720486499607599114} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Option A + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4722504036200243875 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8669098655635635614} + m_Layer: 5 + m_Name: exitAnimationDuration + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8669098655635635614 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4722504036200243875} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6725098648364872687} + - {fileID: 3714581752140258541} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4912302917372915194 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3996179765121952343} + - component: {fileID: 8804896994019015403} + - component: {fileID: 8197282414274901137} + m_Layer: 5 + m_Name: Item Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3996179765121952343 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4912302917372915194} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5290454820859113095} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 5, y: -0.5} + m_SizeDelta: {x: -30, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8804896994019015403 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4912302917372915194} + m_CullTransparentMesh: 1 +--- !u!114 &8197282414274901137 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4912302917372915194} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Option A + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5048480257772228765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6889739598114313141} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6889739598114313141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5048480257772228765} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7318315172311564703} + m_Father: {fileID: 3680955383656381233} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5127866193192659110 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7656549798775245974} + - component: {fileID: 6381320645782289534} + - component: {fileID: 3973304618803633137} + - component: {fileID: 8363340294625367199} + m_Layer: 5 + m_Name: Scroll View + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7656549798775245974 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5127866193192659110} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8893679260950019636} + - {fileID: 2429789058168529657} + - {fileID: 3680955383656381233} + m_Father: {fileID: 3161252966921572831} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6381320645782289534 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5127866193192659110} + m_CullTransparentMesh: 1 +--- !u!114 &3973304618803633137 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5127866193192659110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8363340294625367199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5127866193192659110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 8058820546803683956} + m_Horizontal: 1 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 10 + m_Viewport: {fileID: 8893679260950019636} + m_HorizontalScrollbar: {fileID: 8180193916669563286} + m_VerticalScrollbar: {fileID: 8050889462025142423} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5373213137933822074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 63360244224178367} + - component: {fileID: 3488658112632739934} + - component: {fileID: 5973186741939853202} + - component: {fileID: 3120634399683941868} + m_Layer: 5 + m_Name: Scrollbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &63360244224178367 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5373213137933822074} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2547598892676201411} + m_Father: {fileID: 7135623083979748633} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &3488658112632739934 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5373213137933822074} + m_CullTransparentMesh: 1 +--- !u!114 &5973186741939853202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5373213137933822074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3120634399683941868 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5373213137933822074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3330226350844479402} + m_HandleRect: {fileID: 634242415576092772} + m_Direction: 2 + m_Value: 0 + m_Size: 0.2 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5374134585504879688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7195980582500054799} + - component: {fileID: 5938296838875845906} + - component: {fileID: 4449606282226260910} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7195980582500054799 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5374134585504879688} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4083017304582584480} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5938296838875845906 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5374134585504879688} + m_CullTransparentMesh: 1 +--- !u!114 &4449606282226260910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5374134585504879688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5461239878186335048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 634242415576092772} + - component: {fileID: 4860479125688185630} + - component: {fileID: 3330226350844479402} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &634242415576092772 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5461239878186335048} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2547598892676201411} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.2} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4860479125688185630 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5461239878186335048} + m_CullTransparentMesh: 1 +--- !u!114 &3330226350844479402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5461239878186335048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5507598006204190390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2123058148642916929} + - component: {fileID: 8669568186880461079} + - component: {fileID: 1055966928654991812} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2123058148642916929 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5507598006204190390} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1490082715194364190} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8669568186880461079 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5507598006204190390} + m_CullTransparentMesh: 1 +--- !u!114 &1055966928654991812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5507598006204190390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5648273803876870408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3582015553262914482} + m_Layer: 5 + m_Name: progressStepDuration + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3582015553262914482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5648273803876870408} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7546025034450107149} + - {fileID: 7301635085284733744} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5654697330433073501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7398822925662301983} + - component: {fileID: 1355552435485598223} + - component: {fileID: 476988315025357635} + m_Layer: 5 + m_Name: Item Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7398822925662301983 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5654697330433073501} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5290454820859113095} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1355552435485598223 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5654697330433073501} + m_CullTransparentMesh: 1 +--- !u!114 &476988315025357635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5654697330433073501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5976953324496250933 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5152640037440921936} + - component: {fileID: 3357304591787277978} + - component: {fileID: 4997503105979977410} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5152640037440921936 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5976953324496250933} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9110849115250756824} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3357304591787277978 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5976953324496250933} + m_CullTransparentMesh: 1 +--- !u!114 &4997503105979977410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5976953324496250933} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 3 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5977232380065825139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7301635085284733744} + - component: {fileID: 7565810113330953859} + - component: {fileID: 3657038852758137198} + - component: {fileID: 7303802091805124928} + m_Layer: 5 + m_Name: InputField (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7301635085284733744 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5977232380065825139} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9110849115250756824} + m_Father: {fileID: 3582015553262914482} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -191.49998, y: 0} + m_SizeDelta: {x: 383, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7565810113330953859 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5977232380065825139} + m_CullTransparentMesh: 1 +--- !u!114 &3657038852758137198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5977232380065825139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7303802091805124928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5977232380065825139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3657038852758137198} + m_TextViewport: {fileID: 9110849115250756824} + m_TextComponent: {fileID: 4997503105979977410} + m_Placeholder: {fileID: 4983233090522469422} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_KeepTextSelectionVisible: 0 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + isAlert: 0 + m_InputValidator: {fileID: 0} + m_ShouldActivateOnSelect: 1 +--- !u!1 &6178192771910853543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1762048434637366019} + - component: {fileID: 1178103100470789104} + - component: {fileID: 1511145111732866078} + - component: {fileID: 6868393277783253458} + m_Layer: 5 + m_Name: Scrollbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1762048434637366019 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6178192771910853543} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 309587007121658836} + m_Father: {fileID: 926003197805526708} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &1178103100470789104 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6178192771910853543} + m_CullTransparentMesh: 1 +--- !u!114 &1511145111732866078 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6178192771910853543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6868393277783253458 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6178192771910853543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1813378545169362136} + m_HandleRect: {fileID: 3397315055439124616} + m_Direction: 2 + m_Value: 0 + m_Size: 0.2 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6300950217567262790 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1810958936199593402} + - component: {fileID: 7067719545904473879} + - component: {fileID: 2162477753957914456} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1810958936199593402 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6300950217567262790} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4043402461673844551} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7067719545904473879 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6300950217567262790} + m_CullTransparentMesh: 1 +--- !u!114 &2162477753957914456 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6300950217567262790} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6489895639057762265 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4406303159952873843} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4406303159952873843 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6489895639057762265} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5052061354656426297} + m_Father: {fileID: 2429789058168529657} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6531824996526287922 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7138819083096972869} + - component: {fileID: 8986158329876470331} + - component: {fileID: 1847912159995513686} + - component: {fileID: 8445153130951204632} + m_Layer: 5 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7138819083096972869 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6531824996526287922} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 263079864809246157} + - {fileID: 3964451404126891936} + - {fileID: 7135623083979748633} + m_Father: {fileID: 5250766324582680904} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -191.49998, y: 0} + m_SizeDelta: {x: 383, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8986158329876470331 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6531824996526287922} + m_CullTransparentMesh: 1 +--- !u!114 &1847912159995513686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6531824996526287922} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8445153130951204632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6531824996526287922} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1847912159995513686} + m_Template: {fileID: 7135623083979748633} + m_CaptionText: {fileID: 1516841646207679801} + m_CaptionImage: {fileID: 0} + m_Placeholder: {fileID: 0} + m_ItemText: {fileID: 8197282414274901137} + m_ItemImage: {fileID: 0} + m_Value: 0 + m_MultiSelect: 0 + m_Options: + m_Options: + - m_Text: "\u5168\u5C4F\u6A21\u5F0F" + m_Image: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + - m_Text: "\u7A97\u53E3\u6A21\u5F0F" + m_Image: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + - m_Text: "\u65E0\u8FB9\u6846\u7A97\u53E3\u6A21\u5F0F" + m_Image: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_AlphaFadeSpeed: 0.15 +--- !u!1 &7005200858412477501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3161252966921572831} + - component: {fileID: 5775750415817578075} + - component: {fileID: 3865634211829845719} + - component: {fileID: 5138371200098783773} + m_Layer: 5 + m_Name: SettingUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3161252966921572831 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7005200858412477501} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7656549798775245974} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5775750415817578075 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7005200858412477501} + m_CullTransparentMesh: 1 +--- !u!114 &3865634211829845719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7005200858412477501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5138371200098783773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7005200858412477501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7f4127efa613491894a9b1a7e9918a26, type: 3} + m_Name: + m_EditorClassIdentifier: + exclusive: 1 + needPause: 1 + isInputOccupied: 0 + actionButton: 0 + globalVolume: {fileID: 2316664195302985391} + developerMode: {fileID: 1748158905204360579} + friendlyFire: {fileID: 1204233337456510451} + showMiniMap: {fileID: 2665600169125004565} + windowMode: {fileID: 2798388203338564097} + windowResolution: {fileID: 8445153130951204632} + progressStepDuration: {fileID: 7303802091805124928} + exitAnimationDuration: {fileID: 1339875679507769270} +--- !u!1 &7158126333423389774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4984170088431757184} + - component: {fileID: 1204233337456510451} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4984170088431757184 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7158126333423389774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4083017304582584480} + m_Father: {fileID: 63467561189681800} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 200, y: 0} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1204233337456510451 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7158126333423389774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7049343221700167469} + toggleTransition: 1 + graphic: {fileID: 4449606282226260910} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &7477865727655360029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2429789058168529657} + - component: {fileID: 714650073984825994} + - component: {fileID: 6128130764029742532} + - component: {fileID: 8180193916669563286} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2429789058168529657 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7477865727655360029} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4406303159952873843} + m_Father: {fileID: 7656549798775245974} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!222 &714650073984825994 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7477865727655360029} + m_CullTransparentMesh: 1 +--- !u!114 &6128130764029742532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7477865727655360029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8180193916669563286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7477865727655360029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1638479685853257944} + m_HandleRect: {fileID: 5052061354656426297} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &7640778670268013012 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 309587007121658836} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &309587007121658836 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7640778670268013012} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3397315055439124616} + m_Father: {fileID: 1762048434637366019} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7916569683615427811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 295539933603177805} + - component: {fileID: 8140161451564229247} + - component: {fileID: 9025852870735589877} + - component: {fileID: 2798388203338564097} + m_Layer: 5 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &295539933603177805 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7916569683615427811} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 924695474515547571} + - {fileID: 5841364601243342536} + - {fileID: 926003197805526708} + m_Father: {fileID: 6826727892685997569} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -191.49998, y: 0} + m_SizeDelta: {x: 383, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8140161451564229247 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7916569683615427811} + m_CullTransparentMesh: 1 +--- !u!114 &9025852870735589877 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7916569683615427811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2798388203338564097 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7916569683615427811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 9025852870735589877} + m_Template: {fileID: 926003197805526708} + m_CaptionText: {fileID: 8480175788965000568} + m_CaptionImage: {fileID: 0} + m_Placeholder: {fileID: 0} + m_ItemText: {fileID: 7478674557773554051} + m_ItemImage: {fileID: 0} + m_Value: 0 + m_MultiSelect: 0 + m_Options: + m_Options: + - m_Text: "\u5168\u5C4F\u6A21\u5F0F" + m_Image: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + - m_Text: "\u7A97\u53E3\u6A21\u5F0F" + m_Image: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + - m_Text: "\u65E0\u8FB9\u6846\u7A97\u53E3\u6A21\u5F0F" + m_Image: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_AlphaFadeSpeed: 0.15 +--- !u!1 &7922680808427187277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3148395403631912981} + - component: {fileID: 4095169916173393156} + - component: {fileID: 6140162901640987731} + - component: {fileID: 1740348381636055580} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3148395403631912981 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922680808427187277} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3836861798404527932} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4095169916173393156 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922680808427187277} + m_CullTransparentMesh: 1 +--- !u!114 &6140162901640987731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922680808427187277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u5355\u4F4D\u79D2" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &1740348381636055580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922680808427187277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &8049553204683327267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3964451404126891936} + - component: {fileID: 7580606544887186343} + - component: {fileID: 3560958090968239142} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3964451404126891936 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8049553204683327267} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7138819083096972869} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -15, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7580606544887186343 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8049553204683327267} + m_CullTransparentMesh: 1 +--- !u!114 &3560958090968239142 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8049553204683327267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8085504701898883397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5250766324582680904} + m_Layer: 5 + m_Name: windowResolution + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5250766324582680904 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085504701898883397} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1413330361609039904} + - {fileID: 7138819083096972869} + m_Father: {fileID: 8058820546803683956} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8088982534660837187 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 926003197805526708} + - component: {fileID: 7790064011965575525} + - component: {fileID: 4629880662850142732} + - component: {fileID: 8639209237487549575} + m_Layer: 5 + m_Name: Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &926003197805526708 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8088982534660837187} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3379054812730770157} + - {fileID: 1762048434637366019} + m_Father: {fileID: 295539933603177805} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 0, y: 150} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &7790064011965575525 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8088982534660837187} + m_CullTransparentMesh: 1 +--- !u!114 &4629880662850142732 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8088982534660837187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8639209237487549575 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8088982534660837187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 7107798964162086518} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 3379054812730770157} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 6868393277783253458} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &8147359910737180227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3714581752140258541} + - component: {fileID: 4178069641460258849} + - component: {fileID: 1085355103921160463} + - component: {fileID: 1339875679507769270} + m_Layer: 5 + m_Name: InputField (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3714581752140258541 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8147359910737180227} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3836861798404527932} + m_Father: {fileID: 8669098655635635614} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -191.49998, y: 0} + m_SizeDelta: {x: 383, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4178069641460258849 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8147359910737180227} + m_CullTransparentMesh: 1 +--- !u!114 &1085355103921160463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8147359910737180227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1339875679507769270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8147359910737180227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1085355103921160463} + m_TextViewport: {fileID: 3836861798404527932} + m_TextComponent: {fileID: 384999528408154578} + m_Placeholder: {fileID: 6140162901640987731} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_KeepTextSelectionVisible: 0 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + isAlert: 0 + m_InputValidator: {fileID: 0} + m_ShouldActivateOnSelect: 1 +--- !u!1 &8319217787010628364 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8893679260950019636} + - component: {fileID: 3086651971070761616} + - component: {fileID: 3930939083755214398} + - component: {fileID: 959824910974700171} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8893679260950019636 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8319217787010628364} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8058820546803683956} + m_Father: {fileID: 7656549798775245974} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &3086651971070761616 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8319217787010628364} + m_CullTransparentMesh: 1 +--- !u!114 &3930939083755214398 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8319217787010628364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &959824910974700171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8319217787010628364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &8448091494704143609 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5290454820859113095} + - component: {fileID: 3573997476455464986} + m_Layer: 5 + m_Name: Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5290454820859113095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8448091494704143609} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7398822925662301983} + - {fileID: 3515912850959171173} + - {fileID: 3996179765121952343} + m_Father: {fileID: 5092041354160900864} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3573997476455464986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8448091494704143609} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 476988315025357635} + toggleTransition: 1 + graphic: {fileID: 4486507006542201377} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &8506057209439793629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 428523437888771562} + - component: {fileID: 8630171879463387493} + - component: {fileID: 2288268014088957173} + m_Layer: 5 + m_Name: Item Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &428523437888771562 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8506057209439793629} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6953457992497543611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8630171879463387493 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8506057209439793629} + m_CullTransparentMesh: 1 +--- !u!114 &2288268014088957173 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8506057209439793629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8981397588824636989 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 924695474515547571} + - component: {fileID: 6719212547644468602} + - component: {fileID: 8480175788965000568} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &924695474515547571 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8981397588824636989} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 295539933603177805} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7.5, y: -0.5} + m_SizeDelta: {x: -35, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6719212547644468602 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8981397588824636989} + m_CullTransparentMesh: 1 +--- !u!114 &8480175788965000568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8981397588824636989} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u5168\u5C4F\u6A21\u5F0F" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_sharedMaterial: {fileID: -1361428157011412921, guid: 317edb274e9c5144a9916937bdbf7716, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1001 &933805265909766981 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 63467561189681800} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u53CB\u65B9\u4F24\u5BB3" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &302567673854195513 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 933805265909766981} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1970972700890602588 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5250766324582680904} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u7A97\u53E3\u5206\u8FA8\u7387" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &1413330361609039904 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 1970972700890602588} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2986337881669863803 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2900881902830087411} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: Applay + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u5E94\u7528" + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_fontSize + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_fontSizeBase + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 5138371200098783773} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ApplySettings + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UI.SettingUI, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &4469608227242572628 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 2986337881669863803} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3460623932033366543 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5877050460090954826} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u97F3\u91CF" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &4089829637003728499 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 3460623932033366543} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3562122742722363287 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4382446647419696272} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u663E\u793A\u5C0F\u5730\u56FE" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &4154665771205055467 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 3562122742722363287} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4124528537733325346 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8058820546803683956} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u8BBE\u7F6E" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 50 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &3601227794910465630 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 4124528537733325346} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5451150519822211802 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2900881902830087411} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: Enter + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u786E\u8BA4" + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_fontSize + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_fontSizeBase + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 5138371200098783773} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: EnterSetting + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UI.SettingUI, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &6688065346470750453 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 5451150519822211802} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5947696671842726381 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 588209722058685216} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u5F00\u53D1\u8005\u6A21\u5F0F" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &6506878885246655889 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 5947696671842726381} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6166339203351699347 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8669098655635635614} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u4E3B\u754C\u9762\u6DE1\u5165\u65F6\u95F4" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &6725098648364872687 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 6166339203351699347} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6474175166401282664 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 6826727892685997569} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u7A97\u53E3\u6A21\u5F0F" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &5845532954375859732 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 6474175166401282664} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6953479255077607281 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 3582015553262914482} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u6B65\u9AA4\u95F4\u6DE1\u5165\u65F6\u95F4" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontColor32.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: -6983149199180571386, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &7546025034450107149 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 6953479255077607281} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7205879514409307497 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2900881902830087411} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: Cancel + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u53D6\u6D88" + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_fontSize + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_fontSizeBase + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 5138371200098783773} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: CancelSettings + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UI.SettingUI, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &8320059764338655046 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 7205879514409307497} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &9004906224872856744 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8058820546803683956} + m_Modifications: + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Name + value: TextTemplate (1) + objectReference: {fileID: 0} + - target: {fileID: 27210933623785530, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_text + value: "\u521D\u59CB\u5316\u754C\u9762\u52A8\u753B" + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSize + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_fontSizeBase + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_VerticalAlignment + value: 512 + objectReference: {fileID: 0} + - target: {fileID: 7303780691383776844, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + propertyPath: m_HorizontalAlignment + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} +--- !u!224 &8372402552497025236 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 632585612639644796, guid: 4572fd0db4eb91d4588451064f59c91b, type: 3} + m_PrefabInstance: {fileID: 9004906224872856744} + m_PrefabAsset: {fileID: 0} diff --git a/Client/Assets/Resources/Prefab/UI/SettingUI.prefab.meta b/Client/Assets/Resources/Prefab/UI/SettingUI.prefab.meta new file mode 100644 index 0000000..60af401 --- /dev/null +++ b/Client/Assets/Resources/Prefab/UI/SettingUI.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6846a4c7db6ab7e49812b377bdf8df7d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/RunTimeResource.meta b/Client/Assets/RunTimeResource.meta new file mode 100644 index 0000000..ed98316 --- /dev/null +++ b/Client/Assets/RunTimeResource.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f10104ad497a1c644832db9cfb3ec71a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/RunTimeResource/MiniMap.renderTexture b/Client/Assets/RunTimeResource/MiniMap.renderTexture new file mode 100644 index 0000000..a1d56da --- /dev/null +++ b/Client/Assets/RunTimeResource/MiniMap.renderTexture @@ -0,0 +1,39 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: MiniMap + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_IsAlphaChannelOptional: 0 + serializedVersion: 6 + m_Width: 150 + m_Height: 150 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthStencilFormat: 90 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_UseDynamicScaleExplicit: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_EnableRandomWrite: 0 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 + m_ShadowSamplingMode: 2 diff --git a/Client/Assets/RunTimeResource/MiniMap.renderTexture.meta b/Client/Assets/RunTimeResource/MiniMap.renderTexture.meta new file mode 100644 index 0000000..3ee8012 --- /dev/null +++ b/Client/Assets/RunTimeResource/MiniMap.renderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 994b6fcab4b4f724c9576af3964c870f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Client/Assets/Scenes/Game.unity b/Client/Assets/Scenes/Game.unity index 0337e45..07591cc 100644 --- a/Client/Assets/Scenes/Game.unity +++ b/Client/Assets/Scenes/Game.unity @@ -119,6 +119,194 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &29300414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 29300417} + - component: {fileID: 29300416} + - component: {fileID: 29300415} + m_Layer: 0 + m_Name: Internal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &29300415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29300414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1cf2b22a0f934c5b852b5cdd588d82fa, type: 3} + m_Name: + m_EditorClassIdentifier: + defaultOpen: 0 + _dimensionId: + mapGenerator: {fileID: 29300416} + cameraPosition: {x: 0, y: 0, z: 0} +--- !u!114 &29300416 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29300414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81339b242c794b8d9d28d7111a46bfbf, type: 3} + m_Name: + m_EditorClassIdentifier: + baseMap: {fileID: 2001769458} +--- !u!4 &29300417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29300414} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1000, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2001769457} + - {fileID: 556535796} + - {fileID: 1421953694} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &71139917 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 71139920} + - component: {fileID: 71139918} + - component: {fileID: 71139919} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1839735485 &71139918 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71139917} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!483693784 &71139919 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71139917} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!4 &71139920 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71139917} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2110038582} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &111982856 GameObject: m_ObjectHideFlags: 0 @@ -185,7 +373,7 @@ SpriteRenderer: m_FlipX: 0 m_FlipY: 0 m_DrawMode: 1 - m_Size: {x: 1, y: 1} + m_Size: {x: 0.6, y: 0.6} m_AdaptiveModeThreshold: 0.5 m_SpriteTileMode: 0 m_WasSpriteAssigned: 1 @@ -239,6 +427,7 @@ MonoBehaviour: characterPrefab: {fileID: 3420474218334607780, guid: 5218adfb8e855a9459df63de8b2f323c, type: 3} buildingPrefab: {fileID: 5615006624229444611, guid: d7b9277d8e6ac4541800044bdb0da063, type: 3} bulletPrefab: {fileID: 8687677644466399534, guid: 29b2450a8636a104586e36333878f4d9, type: 3} + pickupPrefab: {fileID: 1096543602564338806, guid: ec84100729cd1bd4699fc15b3a09134c, type: 3} defaultEntityPrefab: {fileID: 7975757421877276383, guid: 89661daa5f100c64783f0ad9cd37a7ff, type: 3} --- !u!4 &164739122 Transform: @@ -255,6 +444,259 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &245779790 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 245779791} + - component: {fileID: 245779794} + - component: {fileID: 245779793} + - component: {fileID: 245779792} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &245779791 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245779790} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1357740966} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!19719996 &245779792 +TilemapCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245779790} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_MaximumTileChangeCount: 1000 + m_ExtrusionFactor: 0 + m_UseDelaunayMesh: 0 +--- !u!483693784 &245779793 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245779790} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &245779794 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245779790} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!1 &274529399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 274529400} + - component: {fileID: 274529403} + - component: {fileID: 274529402} + - component: {fileID: 274529401} + m_Layer: 5 + m_Name: MainHPBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &274529400 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274529399} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 796630699} + - {fileID: 1350296600} + m_Father: {fileID: 1890891271} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &274529401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274529399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5026699f3a94f029628af90ccd8fa8d, type: 3} + m_Name: + m_EditorClassIdentifier: + image: {fileID: 1350296601} +--- !u!114 &274529402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274529399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.745283, g: 0.42562896, b: 0.024608415, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &274529403 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274529399} + m_CullTransparentMesh: 1 --- !u!1 &323725406 GameObject: m_ObjectHideFlags: 0 @@ -334,7 +776,7 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &466785510 +--- !u!1 &476295824 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -342,30 +784,71 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 466785511} - m_Layer: 0 - m_Name: BulletLevel + - component: {fileID: 476295825} + - component: {fileID: 476295827} + - component: {fileID: 476295826} + m_Layer: 5 + m_Name: RawImage m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &466785511 -Transform: +--- !u!224 &476295825 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 466785510} - serializedVersion: 2 + m_GameObject: {fileID: 476295824} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1423222968} + m_Father: {fileID: 1866986816} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &603423466 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &476295826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476295824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: 994b6fcab4b4f724c9576af3964c870f, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &476295827 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476295824} + m_CullTransparentMesh: 1 +--- !u!1 &556535795 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -373,71 +856,44 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 603423468} - - component: {fileID: 603423467} - - component: {fileID: 603423470} - - component: {fileID: 603423469} + - component: {fileID: 556535796} + - component: {fileID: 556535797} m_Layer: 0 - m_Name: Launcher + m_Name: BuildingMap m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &603423467 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 603423466} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b87e0a61112e899429b941b1dcb30018, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &603423468 +--- !u!4 &556535796 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 603423466} + m_GameObject: {fileID: 556535795} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 858.25885, y: 700.2468, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} + m_Children: + - {fileID: 1482680481} + m_Father: {fileID: 29300417} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &603423469 -MonoBehaviour: +--- !u!156049354 &556535797 +Grid: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 603423466} + m_GameObject: {fileID: 556535795} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: cd0367766d04d8c4db80bcfe0202e619, type: 3} - m_Name: - m_EditorClassIdentifier: - isGlobal: 1 ---- !u!114 &603423470 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 603423466} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 66ec6c65c80a43e799c1cb67fc9f7691, type: 3} - m_Name: - m_EditorClassIdentifier: - isGlobal: 1 ---- !u!1 &651025902 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!1 &629678389 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -445,34 +901,169 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 651025903} - m_Layer: 0 - m_Name: BuildingLevel + - component: {fileID: 629678390} + - component: {fileID: 629678394} + - component: {fileID: 629678393} + - component: {fileID: 629678392} + - component: {fileID: 629678391} + m_Layer: 5 + m_Name: EquipmentBar m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &651025903 -Transform: +--- !u!224 &629678390 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 651025902} - serializedVersion: 2 + m_GameObject: {fileID: 629678389} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1423222968} + m_Father: {fileID: 1890891271} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -150} + m_SizeDelta: {x: 6, y: 50} + m_Pivot: {x: 0, y: 0} +--- !u!114 &629678391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629678389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &629678392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629678389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 3 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &629678393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629678389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.754717, g: 0.47987247, b: 0.26699895, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &629678394 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629678389} + m_CullTransparentMesh: 1 --- !u!224 &689345800 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 2322698135530781468, guid: afbed11ea0c7e944aa36a71951b00ad6, type: 3} m_PrefabInstance: {fileID: 3215589691918074709} m_PrefabAsset: {fileID: 0} +--- !u!1 &719498455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 719498457} + - component: {fileID: 719498456} + m_Layer: 0 + m_Name: CameraController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &719498456 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 719498455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f749a65b381541fab3f5dd5e487a457b, type: 3} + m_Name: + m_EditorClassIdentifier: + isGlobal: 1 + _zoomSpeed: 5 + _minZoom: 2 + _maxZoom: 20 + _focusLerpSpeed: 5 +--- !u!4 &719498457 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 719498455} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 971.50616, y: 453.6335, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &741561706 GameObject: m_ObjectHideFlags: 0 @@ -483,8 +1074,9 @@ GameObject: m_Component: - component: {fileID: 741561707} - component: {fileID: 741561708} + - component: {fileID: 741561709} m_Layer: 0 - m_Name: map + m_Name: OutsideMap m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -504,6 +1096,8 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1084213391} + - {fileID: 1980392310} + - {fileID: 2110038582} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &741561708 @@ -518,10 +1112,98 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 81339b242c794b8d9d28d7111a46bfbf, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 1 - baseLevel: {fileID: 1084213392} - buildLevel: {fileID: 0} - plantLevel: {fileID: 0} + baseMap: {fileID: 1084213392} +--- !u!114 &741561709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 741561706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1cf2b22a0f934c5b852b5cdd588d82fa, type: 3} + m_Name: + m_EditorClassIdentifier: + defaultOpen: 1 + _dimensionId: + mapGenerator: {fileID: 741561708} + cameraPosition: {x: 0, y: 0, z: 0} +--- !u!1 &796630698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 796630699} + - component: {fileID: 796630701} + - component: {fileID: 796630700} + m_Layer: 5 + m_Name: bk + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &796630699 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 796630698} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 274529400} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &796630700 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 796630698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 1 + m_FillAmount: 0.604 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &796630701 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 796630698} + m_CullTransparentMesh: 1 --- !u!1 &828003921 GameObject: m_ObjectHideFlags: 0 @@ -684,53 +1366,11 @@ TilemapCollider2D: m_MaximumTileChangeCount: 1000 m_ExtrusionFactor: 0 m_UseDelaunayMesh: 0 ---- !u!1 &904176939 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} +--- !u!224 &981108095 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + m_PrefabInstance: {fileID: 2031076800} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 904176941} - - component: {fileID: 904176940} - m_Layer: 0 - m_Name: RightMenu - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &904176940 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 904176939} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 409b8017bbd6443eb2dde17ea6fd5e29, type: 3} - m_Name: - m_EditorClassIdentifier: - isGlobal: 1 - _canvas: {fileID: 0} - _rightMenuPrefab: {fileID: 0} ---- !u!4 &904176941 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 904176939} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 905.6242, y: 443.88705, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1084213390 GameObject: m_ObjectHideFlags: 0 @@ -777,7 +1417,270 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: textureLevel: {fileID: 828003924} - dataOffset: {x: 0, y: 0} +--- !u!1 &1204850182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1204850183} + - component: {fileID: 1204850185} + - component: {fileID: 1204850184} + - component: {fileID: 1204850186} + m_Layer: 0 + m_Name: MiniCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1204850183 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204850182} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1204850184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204850182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!20 &1204850185 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204850182} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.26415092, g: 0.26415092, b: 0.26415092, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 15 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: 994b6fcab4b4f724c9576af3964c870f, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!114 &1204850186 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204850182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ef73ec15d93e4f099081b221e275834d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1204950903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1204950906} + - component: {fileID: 1204950904} + - component: {fileID: 1204950905} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1839735485 &1204950904 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204950903} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!483693784 &1204950905 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204950903} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!4 &1204950906 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204950903} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1980392310} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1236970682 GameObject: m_ObjectHideFlags: 0 @@ -872,11 +1775,14 @@ RectTransform: m_LocalScale: {x: 0, y: 0, z: 0} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 1866986816} + - {fileID: 2062509144} - {fileID: 1892335252} - {fileID: 2068504032} - {fileID: 1672332560} - {fileID: 1401161120} - {fileID: 689345800} + - {fileID: 981108095} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -896,9 +1802,8 @@ GameObject: - component: {fileID: 1239746126} - component: {fileID: 1239746125} - component: {fileID: 1239746124} - - component: {fileID: 1239746128} m_Layer: 0 - m_Name: Camera + m_Name: MainCamera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1022,26 +1927,7 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1239746128 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1239746123} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f749a65b381541fab3f5dd5e487a457b, type: 3} - m_Name: - m_EditorClassIdentifier: - isGlobal: 1 - focusedEntity: {fileID: 0} ---- !u!224 &1401161120 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 1633840166558733415, guid: 97884168f61531647ba02870b2e2160f, type: 3} - m_PrefabInstance: {fileID: 561707863834017811} - m_PrefabAsset: {fileID: 0} ---- !u!1 &1423222967 +--- !u!1 &1350296599 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1049,32 +1935,168 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1423222968} - m_Layer: 0 - m_Name: Entity + - component: {fileID: 1350296600} + - component: {fileID: 1350296602} + - component: {fileID: 1350296601} + m_Layer: 5 + m_Name: Image m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1423222968 +--- !u!224 &1350296600 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350296599} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 274529400} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1350296601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350296599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.023584902, b: 0.023584902, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 1 + m_FillAmount: 0.556 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1350296602 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350296599} + m_CullTransparentMesh: 1 +--- !u!1 &1357740965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1357740966} + - component: {fileID: 1357740967} + m_Layer: 0 + m_Name: Grid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1357740966 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1423222967} + m_GameObject: {fileID: 1357740965} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1891846100} - - {fileID: 651025903} - - {fileID: 466785511} - m_Father: {fileID: 0} + - {fileID: 245779791} + m_Father: {fileID: 2001769457} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &1357740967 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1357740965} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!224 &1401161120 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1633840166558733415, guid: 97884168f61531647ba02870b2e2160f, type: 3} + m_PrefabInstance: {fileID: 561707863834017811} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1421953693 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1421953694} + - component: {fileID: 1421953695} + m_Layer: 0 + m_Name: PlantMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1421953694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1421953693} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1585331068} + m_Father: {fileID: 29300417} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &1421953695 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1421953693} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 --- !u!1 &1468918169 GameObject: m_ObjectHideFlags: 0 @@ -1120,6 +2142,252 @@ Grid: m_CellGap: {x: 0, y: 0, z: 0} m_CellLayout: 0 m_CellSwizzle: 0 +--- !u!1 &1482680480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1482680481} + - component: {fileID: 1482680483} + - component: {fileID: 1482680482} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1482680481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482680480} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 556535796} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1482680482 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482680480} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &1482680483 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482680480} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!1 &1585331067 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1585331068} + - component: {fileID: 1585331070} + - component: {fileID: 1585331069} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1585331068 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585331067} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1421953694} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1585331069 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585331067} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &1585331070 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585331067} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 --- !u!224 &1672332560 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 8654739876786722101, guid: 1b140ccde6242874785fb30e18322eab, type: 3} @@ -1136,7 +2404,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 22c2554b0c0949aab37618f3a80ffe5a, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &1891846098 +--- !u!1 &1866986815 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1144,39 +2412,818 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1891846100} - m_Layer: 0 - m_Name: EntityLevel + - component: {fileID: 1866986816} + - component: {fileID: 1866986818} + - component: {fileID: 1866986817} + - component: {fileID: 1866986819} + m_Layer: 5 + m_Name: MiniMap m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1891846100 -Transform: +--- !u!224 &1866986816 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1891846098} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 1866986815} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1423222968} + m_Children: + - {fileID: 476295825} + m_Father: {fileID: 1236970686} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -85, y: -85} + m_SizeDelta: {x: 160, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1866986817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866986815} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.6509434, g: 0.6509434, b: 0.6509434, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1866986818 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866986815} + m_CullTransparentMesh: 1 +--- !u!114 &1866986819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866986815} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: feb227be5c204aaea27e09f754dc05b8, type: 3} + m_Name: + m_EditorClassIdentifier: + background: {fileID: 1866986817} + texture: {fileID: 476295826} +--- !u!1 &1890891270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1890891271} + - component: {fileID: 1890891274} + - component: {fileID: 1890891273} + - component: {fileID: 1890891272} + m_Layer: 5 + m_Name: FocuseEntityInf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1890891271 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1890891270} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 274529400} + - {fileID: 629678390} + m_Father: {fileID: 2062509144} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1890891272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1890891270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4432817f903945648bdc0b3a4ba19adc, type: 3} + m_Name: + m_EditorClassIdentifier: + uiParent: {fileID: 629678389} + itemUIPrefab: {fileID: 39290904923667451, guid: d989d0eda9043f146bb606ec0fd32905, type: 3} +--- !u!114 &1890891273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1890891270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 +--- !u!114 &1890891274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1890891270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 6 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!224 &1892335252 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 4227482396833377269, guid: 72cde32427f7d914692a7b0d22fb791d, type: 3} m_PrefabInstance: {fileID: 481559811017721991} m_PrefabAsset: {fileID: 0} +--- !u!1 &1980392309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1980392310} + - component: {fileID: 1980392311} + m_Layer: 0 + m_Name: BuildingMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1980392310 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1980392309} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1204950906} + m_Father: {fileID: 741561707} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &1980392311 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1980392309} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!1 &2001769456 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2001769457} + - component: {fileID: 2001769458} + m_Layer: 0 + m_Name: baseGround + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2001769457 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001769456} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1357740966} + m_Father: {fileID: 29300417} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2001769458 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001769456} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e7ec2149bca47f42965dd01c01116cd, type: 3} + m_Name: + m_EditorClassIdentifier: + textureLevel: {fileID: 245779794} +--- !u!1001 &2031076800 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1236970686} + m_Modifications: + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -255 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -305 + objectReference: {fileID: 0} + - target: {fileID: 1810958936199593402, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1810958936199593402, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1810958936199593402, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.x + value: 0.95 + objectReference: {fileID: 0} + - target: {fileID: 2429789058168529657, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2429789058168529657, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -550 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -415 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + - target: {fileID: 3680955383656381233, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3680955383656381233, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 312.99994 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -85 + objectReference: {fileID: 0} + - target: {fileID: 5052061354656426297, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5052061354656426297, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5052061354656426297, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -205 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -105 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 532.99994 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -85 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -155 + objectReference: {fileID: 0} + - target: {fileID: 7005200858412477501, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Name + value: SettingUI + objectReference: {fileID: 0} + - target: {fileID: 7005200858412477501, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7318315172311564703, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7318315172311564703, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7318315172311564703, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 0.30161297 + objectReference: {fileID: 0} + - target: {fileID: 8050889462025142423, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Size + value: 0.698387 + objectReference: {fileID: 0} + - target: {fileID: 8050889462025142423, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8058820546803683956, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: 620 + objectReference: {fileID: 0} + - target: {fileID: 8180193916669563286, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Size + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 8180193916669563286, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 422.99994 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -85 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -340 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -465 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} +--- !u!1 &2062509143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2062509144} + - component: {fileID: 2062509145} + m_Layer: 5 + m_Name: PlayerUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2062509144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062509143} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1176865964342248741} + - {fileID: 1890891271} + m_Father: {fileID: 1236970686} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2062509145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062509143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fcb0352f5bd43a49b164e24a38447e3, type: 3} + m_Name: + m_EditorClassIdentifier: + focusedEntityHP: {fileID: 274529401} + lastEntityHP: {fileID: 1176865964342248742} --- !u!224 &2068504032 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 6806539210387795853, guid: 620f2670398686943a232c5a71a6f1d5, type: 3} m_PrefabInstance: {fileID: 6268679642209076924} m_PrefabAsset: {fileID: 0} +--- !u!1 &2110038581 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2110038582} + - component: {fileID: 2110038583} + m_Layer: 0 + m_Name: PlantMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2110038582 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110038581} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 71139920} + m_Father: {fileID: 741561707} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &2110038583 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110038581} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 --- !u!1001 &481559811017721991 PrefabInstance: m_ObjectHideFlags: 0 @@ -1470,15 +3517,196 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 2054715303808414256, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2054715303808414256, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2054715303808414256, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.x + value: 399.99997 + objectReference: {fileID: 0} + - target: {fileID: 2054715303808414256, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.y + value: -164.99998 + objectReference: {fileID: 0} + - target: {fileID: 2831061748208868200, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2831061748208868200, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2831061748208868200, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.x + value: 399.99997 + objectReference: {fileID: 0} + - target: {fileID: 2831061748208868200, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.y + value: -244.99998 + objectReference: {fileID: 0} - target: {fileID: 3530227357112532485, guid: 97884168f61531647ba02870b2e2160f, type: 3} propertyPath: m_Name value: EscUI objectReference: {fileID: 0} + - target: {fileID: 3530227357112532485, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5084767838786362069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5084767838786362069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5084767838786362069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.x + value: 399.99997 + objectReference: {fileID: 0} + - target: {fileID: 5084767838786362069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.y + value: -204.99998 + objectReference: {fileID: 0} + - target: {fileID: 5683899746708222069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5683899746708222069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5683899746708222069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.x + value: 399.99997 + objectReference: {fileID: 0} + - target: {fileID: 5683899746708222069, guid: 97884168f61531647ba02870b2e2160f, type: 3} + propertyPath: m_AnchoredPosition.y + value: -285 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 97884168f61531647ba02870b2e2160f, type: 3} +--- !u!1001 &1176865964342248740 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 2062509144} + m_Modifications: + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_AnchorMin.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_SizeDelta.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalRotation.z + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_AnchoredPosition.x + value: -9.999939 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_AnchoredPosition.y + value: 52 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 7666974979659500467, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + propertyPath: m_Name + value: Bar + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} +--- !u!224 &1176865964342248741 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 6633399472656308268, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + m_PrefabInstance: {fileID: 1176865964342248740} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1176865964342248742 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8924509912883067279, guid: 1b1aef36872c4f44a907f96bf813e8e5, type: 3} + m_PrefabInstance: {fileID: 1176865964342248740} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5026699f3a94f029628af90ccd8fa8d, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &3215589691918074709 PrefabInstance: m_ObjectHideFlags: 0 @@ -1839,11 +4067,11 @@ SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 1239746127} + - {fileID: 1204850183} + - {fileID: 1236970686} - {fileID: 323725409} - {fileID: 741561707} - - {fileID: 1236970686} - - {fileID: 603423468} - - {fileID: 164739122} - - {fileID: 1423222968} + - {fileID: 29300417} - {fileID: 111982858} - - {fileID: 904176941} + - {fileID: 164739122} + - {fileID: 719498457} diff --git a/Client/Assets/Scenes/Initiate.unity b/Client/Assets/Scenes/Initiate.unity index c5e45ee..b1ee7f1 100644 --- a/Client/Assets/Scenes/Initiate.unity +++ b/Client/Assets/Scenes/Initiate.unity @@ -119,6 +119,277 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1001 &114698586 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1482151278} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: ButtonTemplate (2) + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u8BBE\u7F6E" + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 863426611} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: SettingsButton + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UI.EscUI, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &114698587 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 114698586} + m_PrefabAsset: {fileID: 0} +--- !u!1 &187000032 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 187000036} + - component: {fileID: 187000035} + - component: {fileID: 187000034} + - component: {fileID: 187000033} + m_Layer: 0 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &187000033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187000032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!81 &187000034 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187000032} + m_Enabled: 1 +--- !u!20 &187000035 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187000032} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.3433962, g: 0.3433962, b: 0.3433962, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 8.970261 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &187000036 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187000032} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.0606768, y: 1.6407344, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &194192102 GameObject: m_ObjectHideFlags: 0 @@ -704,6 +975,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1344781620} + - {fileID: 862239518} - {fileID: 1989361080} - {fileID: 863426610} m_Father: {fileID: 0} @@ -713,11 +985,299 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!1001 &682858363 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1482151278} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: ButtonTemplate + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u5F00\u59CB" + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1848984429} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToScene + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Base.Launcher, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument + value: Game + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &682858364 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 682858363} + m_PrefabAsset: {fileID: 0} +--- !u!224 &862239518 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + m_PrefabInstance: {fileID: 3159610982499366409} + m_PrefabAsset: {fileID: 0} --- !u!224 &863426610 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 1633840166558733415, guid: 97884168f61531647ba02870b2e2160f, type: 3} m_PrefabInstance: {fileID: 360627886} m_PrefabAsset: {fileID: 0} +--- !u!114 &863426611 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4955394867221047595, guid: 97884168f61531647ba02870b2e2160f, type: 3} + m_PrefabInstance: {fileID: 360627886} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7eac7c56e1474c4ea646c0a408d293a3, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1130712157 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1482151278} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: ButtonTemplate (3) + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u9000\u51FA" + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 863426611} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ExitButton + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: UI.EscUI, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &1130712158 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 1130712157} + m_PrefabAsset: {fileID: 0} --- !u!1 &1145531077 GameObject: m_ObjectHideFlags: 0 @@ -854,7 +1414,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1145531077} m_CullTransparentMesh: 1 ---- !u!1 &1273116157 +--- !u!1 &1200712021 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -862,130 +1422,40 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1273116161} - - component: {fileID: 1273116160} - - component: {fileID: 1273116159} - - component: {fileID: 1273116158} + - component: {fileID: 1200712023} + - component: {fileID: 1200712022} m_Layer: 0 - m_Name: Camera + m_Name: RightMenuManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &1273116158 +--- !u!114 &1200712022 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273116157} + m_GameObject: {fileID: 1200712021} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Script: {fileID: 11500000, guid: 409b8017bbd6443eb2dde17ea6fd5e29, type: 3} m_Name: m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 0 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_Version: 2 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 ---- !u!81 &1273116159 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273116157} - m_Enabled: 1 ---- !u!20 &1273116160 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273116157} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 2 - m_BackGroundColor: {r: 0.2924528, g: 0.2924528, b: 0.2924528, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 12.124355 - m_Depth: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1273116161 + isGlobal: 1 + _canvas: {fileID: 0} + _rightMenuPrefab: {fileID: 0} +--- !u!4 &1200712023 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273116157} + m_GameObject: {fileID: 1200712021} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalPosition: {x: 82.63557, y: 36.06109, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -1037,6 +1507,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1482151278} + - component: {fileID: 1482151279} m_Layer: 5 m_Name: Button m_TagString: Untagged @@ -1055,14 +1526,162 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 682858364} + - {fileID: 1705599414} + - {fileID: 114698587} + - {fileID: 1130712158} m_Father: {fileID: 1344781620} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: -200, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1482151279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482151277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &1705599413 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1482151278} + m_Modifications: + - target: {fileID: 190104900697248908, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Name + value: ButtonTemplate (1) + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5723833987058492246, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_text + value: "\u5B58\u6863" + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8827200521422920569, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f0afd08be12de0d43af753af4f618da4, type: 3} +--- !u!224 &1705599414 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1690722858018107951, guid: f0afd08be12de0d43af753af4f618da4, type: 3} + m_PrefabInstance: {fileID: 1705599413} + m_PrefabAsset: {fileID: 0} --- !u!1 &1848984427 GameObject: m_ObjectHideFlags: 0 @@ -1110,8 +1729,8 @@ MonoBehaviour: loadingUI: {fileID: 1989361079} progressBar: {fileID: 521385226} describeText: {fileID: 1145531079} - duration: 1 - fadeDuration: 1 + duration: 0 + fadeDuration: 0 --- !u!1 &1989361079 GameObject: m_ObjectHideFlags: 0 @@ -1180,8 +1799,10 @@ MonoBehaviour: m_EditorClassIdentifier: isGlobal: 1 characterPrefab: {fileID: 3420474218334607780, guid: 5218adfb8e855a9459df63de8b2f323c, type: 3} + monsterPrefab: {fileID: 3009419556014787454, guid: 90f616eda22821c49bd8cb9c3e897f05, type: 3} buildingPrefab: {fileID: 5615006624229444611, guid: d7b9277d8e6ac4541800044bdb0da063, type: 3} bulletPrefab: {fileID: 8687677644466399534, guid: 29b2450a8636a104586e36333878f4d9, type: 3} + pickupPrefab: {fileID: 1096543602564338806, guid: ec84100729cd1bd4699fc15b3a09134c, type: 3} defaultEntityPrefab: {fileID: 7975757421877276383, guid: 89661daa5f100c64783f0ad9cd37a7ff, type: 3} --- !u!4 &2131333544 Transform: @@ -1198,14 +1819,440 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &3159610982499366409 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 668892717} + m_Modifications: + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 63467561189681800, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -255 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 588209722058685216, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -305 + objectReference: {fileID: 0} + - target: {fileID: 1810958936199593402, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1810958936199593402, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1810958936199593402, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.x + value: 0.95 + objectReference: {fileID: 0} + - target: {fileID: 2429789058168529657, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2429789058168529657, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 2900881902830087411, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -550 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 3582015553262914482, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -415 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 3601227794910465630, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + - target: {fileID: 3680955383656381233, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3680955383656381233, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 312.99994 + objectReference: {fileID: 0} + - target: {fileID: 4469608227242572628, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -85 + objectReference: {fileID: 0} + - target: {fileID: 5052061354656426297, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5052061354656426297, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 5250766324582680904, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -205 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 5877050460090954826, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -105 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 532.99994 + objectReference: {fileID: 0} + - target: {fileID: 6688065346470750453, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -85 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 6826727892685997569, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -155 + objectReference: {fileID: 0} + - target: {fileID: 7005200858412477501, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Name + value: SettingUI + objectReference: {fileID: 0} + - target: {fileID: 7005200858412477501, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7318315172311564703, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7318315172311564703, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7318315172311564703, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 0.30161297 + objectReference: {fileID: 0} + - target: {fileID: 8050889462025142423, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Size + value: 0.698387 + objectReference: {fileID: 0} + - target: {fileID: 8050889462025142423, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_Value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8058820546803683956, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: 620 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 422.99994 + objectReference: {fileID: 0} + - target: {fileID: 8320059764338655046, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -85 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 8372402552497025236, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -340 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: 582.99994 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 391.49997 + objectReference: {fileID: 0} + - target: {fileID: 8669098655635635614, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchoredPosition.y + value: -465 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 8893679260950019636, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - - {fileID: 1273116161} + - {fileID: 187000036} - {fileID: 668892717} - {fileID: 400281627} - {fileID: 1848984428} - {fileID: 2131333544} - {fileID: 336157946} - {fileID: 597126023} + - {fileID: 1200712023} diff --git a/Client/Assets/Scripts/AI/AIBase.cs b/Client/Assets/Scripts/AI/AIBase.cs index a29c041..f33e9ba 100644 --- a/Client/Assets/Scripts/AI/AIBase.cs +++ b/Client/Assets/Scripts/AI/AIBase.cs @@ -1,5 +1,8 @@ using System; using System.Collections.Generic; +using System.Reflection; +using System.Text.RegularExpressions; +using Data; using UnityEngine; namespace AI @@ -9,6 +12,10 @@ namespace AI public List children = new(); public abstract JobBase GetJob(Entity.Entity target); + + public virtual void Init(BehaviorTreeDef def) + { + } } public class ThinkNode_Selector : AIBase @@ -28,13 +35,7 @@ namespace AI { // 条件函数,返回 true 表示满足条件 private Func condition; - - // 构造函数,传入条件函数 - public ThinkNode_Conditional(Func conditionFunc) - { - condition = conditionFunc; - } - + public override JobBase GetJob(Entity.Entity target) { // 检查条件是否满足 @@ -47,19 +48,32 @@ namespace AI // 条件不满足,直接返回 null return null; } - } - public class ThinkNode_Sequence : AIBase - { - public override JobBase GetJob(Entity.Entity target) + + public override void Init(BehaviorTreeDef def) { - foreach (var aiBase in children) + base.Init(def); // 调用基类的Init方法 + + if (!string.IsNullOrEmpty(def.value)) { - var job = aiBase.GetJob(target); - if (job == null) - return null; // 如果某个子节点返回 null,则整个序列失败 + try + { + // 使用 ConditionDelegateFactory 来解析 def.value 并创建条件委托 + this.condition = ConditionDelegateFactory.CreateConditionDelegate( + def.value, + typeof(Entity.Entity), + typeof(ConditionFunctions) // 指定查找条件函数的类 + ); + } + catch (Exception) + { + this.condition = (e) => false; + } + } + else + { + this.condition = (e) => false; // 如果没有指定条件,则条件始终不满足 } - return null; // 所有子节点完成时返回 null } } - + } \ No newline at end of file diff --git a/Client/Assets/Scripts/AI/ConditionDelegateFactory.cs b/Client/Assets/Scripts/AI/ConditionDelegateFactory.cs new file mode 100644 index 0000000..c9c5d5d --- /dev/null +++ b/Client/Assets/Scripts/AI/ConditionDelegateFactory.cs @@ -0,0 +1,309 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; + +namespace AI +{ + public static class ConditionDelegateFactory + { + // 正则表达式用于解析函数名和参数 + private static readonly Regex _methodCallRegex = new Regex( + @"^(?[a-zA-Z_][a-zA-Z0-9_]*)(?:\((?.*)\))?$", + RegexOptions.Compiled + ); + + /// + /// 解析条件字符串并创建 Func 委托。 + /// + /// 条件字符串,如 "EntityHealth(20)" 或 "IsTargetAlive"。 + /// 实体类型,通常是 typeof(Entity.Entity)。 + /// 包含条件静态方法的类类型,如 typeof(ConditionFunctions)。 + /// 一个 Func 委托。 + /// 当条件字符串格式不正确时抛出。 + /// 当找不到匹配的条件方法时抛出。 + public static Func CreateConditionDelegate( + string conditionString, + Type entityType, + Type conditionClassType) + { + if (string.IsNullOrWhiteSpace(conditionString)) + throw new ArgumentException("条件字符串不能为空。", nameof(conditionString)); + if (entityType == null) + throw new ArgumentNullException(nameof(entityType)); + if (conditionClassType == null) + throw new ArgumentNullException(nameof(conditionClassType)); + + var match = _methodCallRegex.Match(conditionString); + if (!match.Success) + { + throw new ArgumentException( + $"条件字符串 '{conditionString}' 格式不正确。期望格式: MethodName 或 MethodName(arg1, arg2)。"); + } + + var methodName = match.Groups["methodName"].Value; + var argsString = match.Groups["args"].Success ? match.Groups["args"].Value : null; + + // 逻辑修改:支持多参数解析 + var parsedArgValues = new List(); // 存储解析后的参数值 + var parsedArgTypes = new List(); // 存储解析后的参数类型 + + // 第一个参数始终是实体类型 + parsedArgTypes.Add(entityType); + + if (!string.IsNullOrEmpty(argsString)) + { + // 使用辅助方法拆分参数字符串 + var argStrings = SplitArguments(argsString); // <-- 新增辅助方法调用 + foreach (var argStr in argStrings) + { + var arg = ParseLiteral(argStr.Trim()); + parsedArgValues.Add(arg.value); + parsedArgTypes.Add(arg.type); + } + } + + // 逻辑修改:更健壮的方法查找和参数类型匹配 + MethodInfo bestMatchMethod = null; + object[] finalInvokeArgs = null; // 存储最终用于 Invoke 的参数值(已转换类型) + + // 获取所有静态、公共或非公共的同名方法,并过滤返回类型为 bool 的 + var methods = conditionClassType + .GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) + .Where(m => m.Name == methodName && m.ReturnType == typeof(bool)) + .ToList(); + + foreach (var method in methods) + { + var parameters = method.GetParameters(); + + // 检查参数数量是否匹配 + if (parameters.Length != parsedArgTypes.Count) + continue; + + var paramsMatch = true; + var currentInvokeArgs = new object[parameters.Length]; // 临时存储当前方法的参数值 + + // 检查第一个参数(实体类型) + if (!parameters[0].ParameterType.IsAssignableFrom(entityType)) + { + paramsMatch = false; + continue; + } + // 注意:currentInvokeArgs[0] 在这里不赋值,它将在委托执行时由传入的 entity 填充。 + + // 检查后续参数(解析出的额外参数) + for (var i = 1; i < parameters.Length; i++) + { + var methodParamType = parameters[i].ParameterType; + var parsedValueType = parsedArgTypes[i]; + var parsedValue = parsedArgValues[i - 1]; // parsedArgValues 从索引0开始对应第一个额外参数 + + // 尝试直接赋值 + if (methodParamType.IsInstanceOfType(parsedValue)) + { + currentInvokeArgs[i] = parsedValue; + } + // 尝试类型转换(例如 int 到 long,float 到 double) + else if (CanConvert(parsedValue, methodParamType)) // <-- 新增辅助方法调用 + { + try + { + currentInvokeArgs[i] = Convert.ChangeType(parsedValue, methodParamType); + } + catch (Exception) // 捕获所有转换异常 + { + paramsMatch = false; + break; + } + } + else + { + paramsMatch = false; + break; + } + } + + if (paramsMatch) + { + bestMatchMethod = method; + finalInvokeArgs = currentInvokeArgs; // 存储已转换的参数值 + break; // 找到第一个匹配项即停止,如果需要更复杂的匹配规则(如最具体匹配),则需要进一步处理 + } + } + + if (bestMatchMethod == null) + { + // 如果没有找到匹配的方法,抛出异常 + var expectedSignature = $"{methodName}({string.Join(", ", parsedArgTypes.Select(t => t.Name))})"; + throw new MissingMethodException( + $"在类 '{conditionClassType.FullName}' 中未找到名为 '{methodName}' 的静态方法," + + $"其签名与期望的 '{expectedSignature}' 且返回类型为 'bool' 不兼容。" + ); + } + + // 如果没有额外参数,直接创建委托以获得最佳性能 + if (parsedArgValues.Count == 0) + { + return (Func)Delegate.CreateDelegate(typeof(Func), + bestMatchMethod); + } + else + { + // 创建一个闭包来绑定解析后的参数 + // 闭包捕获 finalInvokeArgs,并在运行时填充第一个参数 (entity) + return (entity) => + { + // 复制一份 finalInvokeArgs,因为 Invoke 会修改数组内容(如果参数是 ref/out) + // 并且需要将 entity 放入第一个位置 + var invokeArgs = new object[finalInvokeArgs.Length]; + invokeArgs[0] = entity; + for (var i = 1; i < finalInvokeArgs.Length; i++) + { + invokeArgs[i] = finalInvokeArgs[i]; + } + + return (bool)bestMatchMethod.Invoke(null, invokeArgs); + }; + } + } + + /// + /// 辅助方法:拆分参数字符串。 + /// 这是一个更健壮的实现,能够正确处理包含逗号的带引号字符串和嵌套括号。 + /// + /// 待拆分的参数字符串。 + /// 拆分后的参数列表。 + private static IEnumerable SplitArguments(string argsString) + { + if (string.IsNullOrEmpty(argsString)) + { + return Enumerable.Empty(); + } + + var arguments = new List(); + var currentArgument = new StringBuilder(); + var inQuote = false; // 跟踪是否在双引号内部 + var parenLevel = 0; // 跟踪括号的嵌套层级 + + for (var i = 0; i < argsString.Length; i++) + { + var c = argsString[i]; + + if (c == '"') + { + inQuote = !inQuote; // 切换引号状态 + currentArgument.Append(c); // 将引号字符保留在参数中 + } + else if (c == '(') + { + parenLevel++; // 增加括号层级 + currentArgument.Append(c); + } + else if (c == ')') + { + parenLevel--; // 减少括号层级 + currentArgument.Append(c); + } + else if (c == ',' && !inQuote && parenLevel == 0) + { + // 发现一个顶级的逗号分隔符:不在引号内,也不在任何括号内 + var arg = currentArgument.ToString().Trim(); + if (!string.IsNullOrEmpty(arg)) + { + arguments.Add(arg); + } + currentArgument.Clear(); // 重置,开始收集下一个参数 + } + else + { + // 其他字符,直接添加到当前参数 + currentArgument.Append(c); + } + } + + // 循环结束后,添加最后一个参数(如果有的话) + var lastArg = currentArgument.ToString().Trim(); + if (!string.IsNullOrEmpty(lastArg)) + { + arguments.Add(lastArg); + } + + return arguments; + } + + /// + /// 辅助方法:检查一个值是否可以转换为目标类型。 + /// + private static bool CanConvert(object value, Type targetType) + { + // 逻辑修改:新增辅助方法,用于检查类型转换可行性 + if (value == null) return !targetType.IsValueType || (Nullable.GetUnderlyingType(targetType) != null); + if (targetType.IsInstanceOfType(value)) return true; + + try + { + // 尝试转换,如果成功则表示可转换 + Convert.ChangeType(value, targetType); + return true; + } + catch (Exception) // 捕获所有可能的转换异常 + { + return false; + } + } + + /// + /// 解析字符串字面量为对应的对象和类型。 + /// 支持 int, long, float, double, bool, string。 + /// + /// 要解析的字面量字符串。 + /// 包含解析后的值和类型的元组。 + private static (object value, Type type) ParseLiteral(string literalString) + { + // 逻辑修改:增强 ParseLiteral,增加对 long 和 double 的支持 + // 顺序很重要:先尝试更窄的类型,再尝试更宽的类型,以避免不必要的类型提升。 + + // 尝试解析为 int + if (int.TryParse(literalString, out var intValue)) + { + return (intValue, typeof(int)); + } + + // 尝试解析为 long + if (long.TryParse(literalString, out var longValue)) + { + return (longValue, typeof(long)); + } + + // 尝试解析为 float + if (float.TryParse(literalString, out var floatValue)) + { + return (floatValue, typeof(float)); + } + + // 尝试解析为 double + if (double.TryParse(literalString, out var doubleValue)) + { + return (doubleValue, typeof(double)); + } + + // 尝试解析为 bool + if (bool.TryParse(literalString, out var boolValue)) + { + return (boolValue, typeof(bool)); + } + + // 尝试解析为 string (如果被双引号包围) + if (literalString.StartsWith("\"") && literalString.EndsWith("\"") && literalString.Length > 1) + { + return (literalString.Substring(1, literalString.Length - 2), typeof(string)); + } + + // 默认作为字符串处理 + return (literalString, typeof(string)); + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/AI/ConditionDelegateFactory.cs.meta b/Client/Assets/Scripts/AI/ConditionDelegateFactory.cs.meta new file mode 100644 index 0000000..ed67e1c --- /dev/null +++ b/Client/Assets/Scripts/AI/ConditionDelegateFactory.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 57f4a853e270411f89c13a3b385ab47d +timeCreated: 1756024020 \ No newline at end of file diff --git a/Client/Assets/Scripts/AI/ConditionFunctions.cs b/Client/Assets/Scripts/AI/ConditionFunctions.cs new file mode 100644 index 0000000..9e0d564 --- /dev/null +++ b/Client/Assets/Scripts/AI/ConditionFunctions.cs @@ -0,0 +1,21 @@ +using System; +using Data; +using Managers; +using UnityEngine; + +namespace AI +{ + public static class ConditionFunctions + { + public static bool EntityHealth(Entity.Entity entity, int minHealth) + { + return entity.attributes.health >= minHealth; + } + + + public static bool HasEnemyInSight(Entity.Entity entity) + { + return Managers.EntityManage.Instance.ExistsHostile(entity.currentDimensionId,entity.entityPrefab); + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/AI/ConditionFunctions.cs.meta b/Client/Assets/Scripts/AI/ConditionFunctions.cs.meta new file mode 100644 index 0000000..751fc17 --- /dev/null +++ b/Client/Assets/Scripts/AI/ConditionFunctions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c81bab8c57104b6ba1fddfee22bc6c7c +timeCreated: 1756023349 \ No newline at end of file diff --git a/Client/Assets/Scripts/AI/JobBase.cs b/Client/Assets/Scripts/AI/JobBase.cs index fb34311..4ff3f97 100644 --- a/Client/Assets/Scripts/AI/JobBase.cs +++ b/Client/Assets/Scripts/AI/JobBase.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; using Base; +using Data; +using Managers; using Prefab; using Unity.VisualScripting; using UnityEngine; @@ -19,6 +21,7 @@ namespace AI { entity = target; } + public bool Update() { if (!Running) @@ -27,11 +30,13 @@ namespace AI timeoutTicks--; return true; } + public virtual void StopJob() { timeoutTicks = 0; } } + public class WanderJob : JobBase { public override void StartJob(Entity.Entity target) @@ -55,6 +60,7 @@ namespace AI } } + public class IdleJob : JobBase { override public void StartJob(Entity.Entity target) @@ -62,10 +68,12 @@ namespace AI base.StartJob(target); timeoutTicks = 500; } + protected override void UpdateJob() { } } + public class MoveJob : JobBase { protected override void UpdateJob() @@ -74,222 +82,203 @@ namespace AI } } - public class TrackPlayerJob : JobBase + public class AttackJob : JobBase { - private EntityPrefab currentTarget; // 当前追踪的目标玩家 - private LinkedList players; // 玩家实体列表 + private Entity.Entity attackTarget; - public override void StartJob(Entity.Entity target) + // StartJob 方法:用于初始化任务,寻找初始攻击目标 + override public void StartJob(Entity.Entity performerEntityContext) // 参数名更明确,通常是发起任务的实体 { - base.StartJob(target); - UpdateTarget(); + base.StartJob(performerEntityContext); + // 1. 任务执行者自身有效性检查 + if (entity == null) + { + StopJob(); // 调用StopJob来结束任务 + return; + } + + attackTarget = FindNewHostileTarget(); + + if (attackTarget == null) + { + StopJob(); // 调用StopJob来结束任务 + } } protected override void UpdateJob() { - if (!currentTarget || currentTarget.entity.IsDead) + // 1. 任务执行者的基本检查 + if (entity == null || entity.IsDead) { - // 如果当前目标无效,则重新查找最近的玩家 - UpdateTarget(); + StopJob(); + return; } - if (currentTarget) + if (attackTarget == null || attackTarget.IsDead) + { + attackTarget = FindNewHostileTarget(); // 尝试寻找新的攻击目标 + if (attackTarget == null) + { + StopJob(); + return; + } + } + + var weapon = entity.GetCurrentWeapon(); + var attackRange = 0f; + if (weapon != null) + { + attackRange = weapon.Attributes.attackRange; + } + + var distanceSq = (entity.Position - attackTarget.Position).sqrMagnitude; + var effectiveAttackRangeSq = attackRange * attackRange; // 将攻击范围也平方 + + entity.SetTarget(attackTarget.Position); + + if (weapon != null && distanceSq <= effectiveAttackRangeSq) + { + entity.TryAttack(); + + } + else { - var targetPosition = new Vector3(currentTarget.Position.x, currentTarget.Position.y, 0); - entity.SetTarget(targetPosition); entity.TryMove(); } } - private void UpdateTarget() + /// + /// 查找执行实体最近的敌对目标。 + /// + /// 找到的敌对实体,如果没有则返回null。 + private Entity.Entity FindNewHostileTarget() { - players = Managers.EntityManage.Instance.FindEntitiesByFaction("Player"); + if (!entity) return null; + return EntityManage.Instance.FindNearestEntityByRelation( + entity.currentDimensionId, // 搜索维度ID + entity.entityPrefab, // 执行实体的Prefab ID,用于关系判断 + Relation.Hostile)?.entity; // 寻找敌对关系的目标 + } + } - if (players == null || players.Count == 0) + public class AdvancedAttackJob : JobBase + { + private Entity.Entity attackTarget; + + // 常量:用于配置远程AI行为的风筝参数 + private const float KITING_THRESHOLD_MULTIPLIER = 0.5f; // 当目标距离小于 (攻击范围 * 此乘数) 时,远程单位开始尝试远离 + + private const float KITING_BUFFER_DISTANCE = 5.0f; // 当远程单位远离时,目标点会是当前位置向反方向偏移此距离 + + // StartJob 方法:用于初始化任务,寻找初始攻击目标 + override public void StartJob(Entity.Entity performerEntityContext) + { + base.StartJob(performerEntityContext); + if (entity == null) { - currentTarget = null; StopJob(); return; } - currentTarget = GetNearestPlayer(players); - } - private EntityPrefab GetNearestPlayer(LinkedList players) - { - EntityPrefab nearestPlayer = null; - float minDistance = float.MaxValue; - - foreach (var player in players) + attackTarget = FindNewHostileTarget(); + if (attackTarget == null) { - if (player.entity.IsDead) continue; // 跳过无效玩家 - - float distance = Vector3.Distance( - new Vector3(player.Position.x, player.Position.y, 0), - new Vector3(entity.Position.x, entity.Position.y, 0) - ); - - if (distance < minDistance) - { - minDistance = distance; - nearestPlayer = player; - } + StopJob(); } - - return nearestPlayer; } - } - public class AttackPlayerJob : JobBase - { - private EntityPrefab player; protected override void UpdateJob() { - if (!player || !IsPlayerInRange()) + // 1. 任务执行者的基本检查 + if (entity == null || entity.IsDead) { - StopJob(); // 如果玩家不在范围内,停止攻击工作 - return; - } - entity.TryAttack(); - } - - private bool IsPlayerInRange() - { - float distance = Vector3.Distance( - new Vector3(player.Position.x, player.Position.y, 0), - new Vector3(entity.Position.x, entity.Position.y, 0) - ); - - return distance <= entity.attributes.attackRange; - } - - public override void StartJob(Entity.Entity target) - { - base.StartJob(target); - - // 查找最近的玩家作为目标 - LinkedList players = Managers.EntityManage.Instance.FindEntitiesByFaction("Player"); - player = GetNearestPlayer(players); - } - - private EntityPrefab GetNearestPlayer(LinkedList players) - { - EntityPrefab nearestPlayer = null; - float minDistance = float.MaxValue; - - foreach (var player in players) - { - if (!IsPlayerValid(player)) continue; - - float distance = Vector3.Distance( - new Vector3(player.Position.x, player.Position.y, 0), - new Vector3(entity.Position.x, entity.Position.y, 0) - ); - - if (distance < minDistance) - { - minDistance = distance; - nearestPlayer = player; - } - } - - return nearestPlayer; - } - - private bool IsPlayerValid(EntityPrefab player) - { - return player && !player.entity.IsDead; - } - } - public class RangedAttackJob : JobBase - { - private EntityPrefab player; - - protected override void UpdateJob() - { - if (!player || !IsPlayerValid(player)) - { - StopJob(); // 如果当前目标无效,停止工作 + StopJob(); return; } - float distance = Vector3.Distance( - new Vector3(player.Position.x, player.Position.y, 0), - new Vector3(entity.Position.x, entity.Position.y, 0) - ); - - if (distance <= entity.attributes.attackRange) + // 2. 攻击目标检查 + if (attackTarget == null || attackTarget.IsDead) { - // 如果在攻击范围内,进行攻击 - entity.TryAttack(); - } - else if (distance > entity.attributes.attackRange && distance < MaxTrackDistance) - { - // 如果距离过远,靠近目标 - MoveTowardsPlayer(); - } - else if (distance < entity.attributes.attackRange) - { - // 如果距离过近,远离目标 - MoveAwayFromPlayer(); - } - } - - private void MoveTowardsPlayer() - { - Vector3 targetPosition = new Vector3(player.Position.x, player.Position.y, 0); - entity.SetTarget(targetPosition); - entity.TryMove(); - } - - private void MoveAwayFromPlayer() - { - Vector3 direction = entity.Position - player.Position; - direction.Normalize(); - Vector3 targetPosition = entity.Position + direction * RetreatDistance; - - entity.SetTarget(targetPosition); - entity.TryMove(); - } - - public override void StartJob(Entity.Entity target) - { - base.StartJob(target); - - // 查找最近的玩家作为目标 - var players = Managers.EntityManage.Instance.FindEntitiesByFaction("Player"); - player = GetNearestPlayer(players); - } - - private EntityPrefab GetNearestPlayer(LinkedList players) - { - EntityPrefab nearestPlayer = null; - float minDistance = float.MaxValue; - - foreach (var player in players) - { - if (!IsPlayerValid(player)) continue; - - float distance = Vector3.Distance( - new Vector3(player.Position.x, player.Position.y, 0), - new Vector3(entity.Position.x, entity.Position.y, 0) - ); - - if (distance < minDistance) + attackTarget = FindNewHostileTarget(); // 尝试寻找新的攻击目标 + if (attackTarget == null) { - minDistance = distance; - nearestPlayer = player; + StopJob(); + return; } } - return nearestPlayer; + // 获取武器和其属性 + var weapon = entity.GetCurrentWeapon(); + var attackRange = 0f; + var isRangedWeapon = false; // 标识是否为远程武器 + if (weapon != null) + { + if (weapon.Attributes != null) + { + attackRange = weapon.Attributes.attackRange; + } + + // 使用 WeaponType 来判断武器类型,更明确 + isRangedWeapon = weapon.Type == WeaponType.Ranged; + } + + var distanceSq = (entity.Position - attackTarget.Position).sqrMagnitude; + var effectiveAttackRangeSq = attackRange * attackRange; // 将攻击范围平方 + // ---- 核心AI行为决策 ( AdvancedAttackJob 的智能之处) ---- + if (isRangedWeapon) + { + // 远程单位的风筝(Kiting)逻辑 + var kitingDistance = attackRange * KITING_THRESHOLD_MULTIPLIER; + var kitingThresholdSq = kitingDistance * kitingDistance; // 过近距离的平方 + // 1. 如果目标过于接近 (小于风筝阈值),尝试远离 + if (distanceSq < kitingThresholdSq) + { + // 计算一个远离目标的点作为移动目标 + var directionAway = (entity.Position - attackTarget.Position).normalized; + var fleePosition = entity.Position + directionAway * KITING_BUFFER_DISTANCE; + entity.SetTarget(fleePosition); // 设置远离点为新的移动目标 + entity.TryMove(); // 优先执行移动操作以拉开距离 + // 在此状态下不进行攻击,专注于 reposition + } + // 2. 如果目标在最佳攻击范围内 (即在风筝阈值和有效攻击范围之间),则停止移动并攻击 + else if (distanceSq <= effectiveAttackRangeSq) + { + entity.SetTarget(entity.Position); // 设定目标为当前位置,使其停止移动,专注于攻击 + entity.TryAttack(); + } + // 3. 如果目标太远 (超出有效攻击范围),则移动靠近目标 + else + { + entity.SetTarget(attackTarget.Position); // 设置目标位置为移动目标 + entity.TryMove(); + } + } + else // 近战单位或没有武器的单位 + { + entity.SetTarget(attackTarget.Position); + if (weapon != null && distanceSq <= effectiveAttackRangeSq) + { + entity.TryAttack(); + } + else + { + entity.TryMove(); + } + } } - private bool IsPlayerValid(EntityPrefab player) + /// + /// 查找执行实体最近的敌对目标。 + /// + /// 找到的敌对实体,如果没有则返回null。 + private Entity.Entity FindNewHostileTarget() { - return player && !player.entity.IsDead; + if (!entity) return null; + return EntityManage.Instance.FindNearestEntityByRelation( + entity.currentDimensionId, + entity.entityPrefab, + Relation.Hostile)?.entity; } - - private const float MaxTrackDistance = 20f; // 最大追踪距离 - private const float RetreatDistance = 3f; // 后退距离 } + } \ No newline at end of file diff --git a/Client/Assets/Scripts/AI/JobGiver.cs b/Client/Assets/Scripts/AI/JobGiver.cs index 48ce7bf..a68aeb8 100644 --- a/Client/Assets/Scripts/AI/JobGiver.cs +++ b/Client/Assets/Scripts/AI/JobGiver.cs @@ -8,13 +8,7 @@ namespace AI } } - public class JobGiver_Enemies : AIBase - { - public override JobBase GetJob(Entity.Entity target) - { - return new TrackPlayerJob(); - } - } + public class JobGiver_RandomWander : AIBase { public override JobBase GetJob(Entity.Entity target) @@ -30,4 +24,18 @@ namespace AI } } + public class JobGiver_AttackJob : AIBase + { + public override JobBase GetJob(Entity.Entity target) + { + return Managers.EntityManage.Instance.ExistsHostile(target.currentDimensionId, target.entityPrefab) ? new AttackJob() : null; + } + } + public class JobGiver_AdvancedAttackJob : AIBase + { + public override JobBase GetJob(Entity.Entity target) + { + return Managers.EntityManage.Instance.ExistsHostile(target.currentDimensionId, target.entityPrefab) ? new AdvancedAttackJob() : null; + } + } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Base/Launcher.cs b/Client/Assets/Scripts/Base/Launcher.cs index e291bae..0c24af9 100644 --- a/Client/Assets/Scripts/Base/Launcher.cs +++ b/Client/Assets/Scripts/Base/Launcher.cs @@ -1,135 +1,293 @@ +// C# using System.Collections; +using System.Collections.Generic; // 新增,用于List using Logging; +using Managers; // 确保日志命名空间正确 using TMPro; using UnityEngine; +using UnityEngine.SceneManagement; namespace Base { + // 请确保你在Unity Editor中将 'projectile' 的Inspector引用从 Gradient 更改为 CustomProgressBar + // 或者替换为你实际的进度条组件类型。 + // 如果你没有 CustomProgressBar,而想用 Image 或者别的,这些 Progress/Opacity 属性需要大幅修改。 public class Launcher : MonoBehaviour { public GameObject loadingUI; - public Gradient progressBar; // 渐变色条 + // 假设 CustomProgressBar 是一个自定义组件,其 API 与原代码使用方式一致 + // 如果这里是 UnityEngine.UI.Image,需要完全改变 Progress 和 Opacity 的实现 + public Gradient progressBar; // 自定义进度条组件 public TMP_Text describeText; // 描述文本 - - public float duration = 0.5f; // 过渡时间 + + public float duration = 0.5f; // 每个步骤的过渡时间 public float fadeDuration = 2f; // 不透明度渐隐的时间 - private float _currentProgress = 0f; // 当前进度 - - private Color textColor; + private float _currentProgressValue = 0f; // 实际的当前进度值(0-1) + private Color _initialTextColor; // 原始文本颜色,用于渐隐 + private Color _initialProgressBarColor1; // 原始进度条颜色1 + private Color _initialProgressBarColor2; // 原始进度条颜色2 - private readonly string[] _loadingSteps = - { - "初始化日志", "正在载入定义", "正在加载图片资源", "正在切割瓦片", "正在加载区分派系", - "正在加载物品" - }; + // 存储所有需要加载和清理的管理器 + private List _managersToLoad; + // Progress 属性,更新进度条和颜色 public float Progress { set { - _currentProgress = value; - if (value < 0.5f) - { - progressBar.color2 = Color.Lerp(Color.black, Color.white, value * 2); - } - else - { - progressBar.color2 = Color.white; - progressBar.color1 = Color.Lerp(Color.black, Color.white, (value - 0.5f) * 2); - } + // 确保进度值在0到1之间,提高健壮性 + _currentProgressValue = Mathf.Clamp01(value); - progressBar.Refresh(); + if (progressBar) + { + // 根据进度值平滑改变进度条的颜色 + if (_currentProgressValue < 0.5f) + { + // 前半段:color2 从初始色渐变到白色 + progressBar.color2 = Color.Lerp(_initialProgressBarColor2, Color.white, _currentProgressValue * 2); + } + else + { + // 后半段:color2 保持白色,color1 从初始色渐变到白色 + progressBar.color2 = Color.white; + progressBar.color1 = Color.Lerp(_initialProgressBarColor1, Color.white, (_currentProgressValue - 0.5f) * 2); + } + progressBar.Refresh(); // 通知自定义进度条组件更新显示 + } } + get => _currentProgressValue; } + // Opacity 属性,更新 UI 元素的透明度 public float Opacity { set { - var alpha = (byte)(value * 255); - progressBar.color1.a = alpha; - progressBar.color2.a = alpha; - describeText.color = value > 0.5f ? Color.Lerp(new Color(1, 1, 1, 0), textColor, (value - 0.5f) * 2) : new Color(1, 1, 1, 0); - progressBar.Refresh(); + var alpha = Mathf.Clamp01(value); // 确保透明度值在0到1之间 + + if (progressBar) + { + // 更新进度条颜色的透明度 + Color c1 = progressBar.color1; + c1.a = alpha; + progressBar.color1 = c1; + + Color c2 = progressBar.color2; + c2.a = alpha; + progressBar.color2 = c2; + + progressBar.Refresh(); + } + + if (describeText) + { + // 更新描述文本颜色的透明度 + // 渐隐时,描述文本的透明度在 Opacity > 0.5f 时才开始渐变可见 + var textAlpha = alpha > 0.5f ? Mathf.Lerp(0f, _initialTextColor.a, (alpha - 0.5f) * 2) : 0f; + describeText.color = new Color(_initialTextColor.r, _initialTextColor.g, _initialTextColor.b, textAlpha); + } + } + } + + private void Awake() + { + // 在 Awake 中初始化管理器列表并注册,确保在 Start 之前完成 + _managersToLoad = new List + { + new Logging.LoggerManagerWrapper(), // UnityLogger的包装器 + Managers.DefineManager.Instance, + Managers.PackagesImageManager.Instance, + Managers.TileManager.Instance, + Managers.AffiliationManager.Instance, + Managers.ItemResourceManager.Instance + // 当未来有新的管理器时,只需在这里添加 Managers.NewManager.Instance + }; + + // 缓存UI的初始颜色,以便后续操作或重置 + if (describeText != null) + { + _initialTextColor = describeText.color; + } + if (progressBar != null) + { + _initialProgressBarColor1 = progressBar.color1; + _initialProgressBarColor2 = progressBar.color2; + } + else + { + Debug.LogWarning("CustomProgressBar component not assigned to Launcher. Progress bar display may not work."); } } private void Start() { + // 如果 Program.Instance.needLoad 为 true,表示需要完整的(重新)加载流程 + // 否则,如果不需要加载,直接禁用UI并返回 + if (!Program.Instance.needLoad) + { + loadingUI.SetActive(false); + return; + } + + // 根据 Program.Instance.needLoad 的含义(需要重载), + // 在开始新的加载流程之前,先清理所有可能存在的旧管理器状态。 + // 这确保了每次需要加载时,系统都处于一个干净的初始状态。 + ClearAllManagers(); // <--- 关键修改:在Load()之前调用ClearAllManagers() + + // 初始化设置 Base.Setting.Instance.Init(); #if !DEBUG - duration = Base.Setting.Instance.progressStepDuration; - fadeDuration = Base.Setting.Instance.exitAnimationDuration; + // 在非DEBUG模式下,从设置中获取过渡时间 + duration = Base.Setting.Instance.CurrentSettings.progressStepDuration; + fadeDuration = Base.Setting.Instance.CurrentSettings.exitAnimationDuration; #endif - loadingUI.SetActive(true); - textColor = describeText.color; + Load(); // 启动加载流程(内部会调用LoadAllManagers) + Program.Instance.needLoad = false; // 加载完成后重置标志 + } + + + /// + /// 启动游戏的加载流程。 + /// + public void Load() + { + loadingUI.SetActive(true); // 激活加载UI + Progress = 0f; // 重置进度 + Opacity = 1f; // 重置透明度为完全不透明 StartCoroutine(LoadAllManagers()); } - private IEnumerator LoadAllManagers() + /// + /// 清理所有管理器,然后重新加载。用于游戏重载或场景切换后需要重新初始化所有数据的情况。 + /// + public void Reload() { - for (var i = 0; i < _loadingSteps.Length; i++) + Debug.Log("Performing a full reload of all managers..."); + StopAllCoroutines(); // 停止当前所有正在运行的加载协程,避免冲突 + ClearAllManagers(); // 清理所有管理器 + Load(); // 重新加载游戏数据 + } + + /// + /// 遍历所有已注册的管理器并调用它们的 Clear 方法。 + /// + private void ClearAllManagers() + { + foreach (var manager in _managersToLoad) { - // 更新描述文本 - describeText.text = _loadingSteps[i]; - - // 获取当前阶段的目标进度 - var targetProgress = (float)(i + 1) / _loadingSteps.Length; - - // 平滑过渡到下一个阶段 - yield return SmoothTransitionTo(targetProgress); - - // 初始化对应的管理器 - switch (i) + try { - case 0: - UnityLogger.Init(); - break; - case 1: - Managers.DefineManager.Instance.Init(); - break; - case 2: - Managers.PackagesImageManager.Instance.Init(); - break; - case 3: - Managers.TileManager.Instance.Init(); - break; - case 4: - Managers.AffiliationManager.Instance.Init(); - break; - case 5: - Managers.ItemResourceManager.Instance.Init(); - break; + manager.Clear(); + } + catch (System.Exception ex) + { + Debug.LogError($"Error clearing manager {manager.StepDescription}: {ex.Message}\n{ex.StackTrace}"); } } + } + + /// + /// 协程:按顺序加载所有管理器。 + /// + private IEnumerator LoadAllManagers() + { + for (var i = 0; i < _managersToLoad.Count; i++) + { + var manager = _managersToLoad[i]; - // 加载完成后的处理 - describeText.text = "加载完成!"; - Progress = 1f; + // 更新描述文本,从管理器实例中获取 + if (describeText != null) + { + describeText.text = manager.StepDescription; + } + + // 计算当前阶段的目标进度 + var targetProgress = (float)(i + 1) / _managersToLoad.Count; + + // 平滑过渡进度条到下一个目标进度 + yield return SmoothTransitionTo(targetProgress); + + // 初始化对应的管理器,并进行异常处理 + yield return InitializeManagerSafely(manager); + + // 模拟耗时,如果管理器Init方法本身很快,可以 uncomment + // yield return new WaitForSeconds(0.1f); + } + + // 所有管理器加载完成后的处理 + if (describeText != null) + { + describeText.text = "加载完成!"; + } + Progress = 1f; // 确保进度条最终达到100% // 开始渐隐效果 yield return FadeOutProgressBar(); + + // 所有加载和动画结束后,可以考虑卸载加载UI,或跳转到主场景 + // ToScene("MainGameScene"); // 如果有需要,在这里跳转到主游戏场景 } + /// + /// 尝试安全地初始化单个管理器,并捕获任何异常。 + /// + /// 要初始化的管理器实例。 + private IEnumerator InitializeManagerSafely(ILaunchManager manager) + { + var initSuccess = false; + System.Exception initException = null; + + try + { + manager.Init(); // 调用管理器的 Init 方法 + initSuccess = true; + } + catch (System.Exception ex) + { + initException = ex; // 捕获异常 + } + + if (!initSuccess && initException != null) + { + // 记录错误日志 + Debug.LogError($"初始化管理器 '{manager.StepDescription}' 时出错: {initException.Message}\n{initException.StackTrace}"); + if (describeText != null) + { + describeText.text = $"{manager.StepDescription} (初始化失败)"; + } + // 这里可以添加更复杂的错误处理,例如显示错误弹窗,或者重试逻辑 + // yield break; // 如果错误严重,可以选择停止后续加载 + } + + yield return null; // 确保协程继续执行,即使没有做任何事 + } + + /// + /// 协程:平滑过渡进度条到指定的目标进度。 + /// + /// 目标进度值 (0-1)。 private IEnumerator SmoothTransitionTo(float targetProgress) { - var startProgress = _currentProgress; + var startProgress = _currentProgressValue; // 获取当前进度作为起始点 var elapsedTime = 0f; while (elapsedTime < duration) { elapsedTime += Time.deltaTime; - var t = Mathf.SmoothStep(0f, 1f, elapsedTime / duration); // 使用 SmoothStep 实现平滑过渡 + // 使用 SmoothStep 实现更自然的加速和减速过渡效果 + var t = Mathf.SmoothStep(0f, 1f, elapsedTime / duration); Progress = Mathf.Lerp(startProgress, targetProgress, t); yield return null; } - // 确保最终进度达到目标值 - Progress = targetProgress; + Progress = targetProgress; // 确保最终进度精确达到目标值 } + /// + /// 协程:渐隐加载UI的透明度。 + /// private IEnumerator FadeOutProgressBar() { var elapsedTime = 0f; @@ -137,14 +295,26 @@ namespace Base while (elapsedTime < fadeDuration) { elapsedTime += Time.deltaTime; - var t = Mathf.SmoothStep(0f, 1f, elapsedTime / fadeDuration); // 使用 SmoothStep 实现平滑渐隐 - Opacity = 1f - t; // 不透明度从 1 到 0 + // 使用 SmoothStep 实现平滑渐隐 + var t = Mathf.SmoothStep(0f, 1f, elapsedTime / fadeDuration); + Opacity = 1f - t; // 透明度从 1 线性渐变到 0 yield return null; } - // 确保最终不透明度为 0 - Opacity = 0f; - loadingUI.SetActive(false); + Opacity = 0f; // 确保最终不透明度为 0 + loadingUI.SetActive(false); // 完全隐藏加载UI + } + + /// + /// 静态方法:加载指定名称的场景。 + /// + /// 要加载的场景名称。 + public static void ToScene(string scene) + { + SceneManager.LoadScene(scene); } } -} \ No newline at end of file + +} + + diff --git a/Client/Assets/Scripts/Base/Setting.cs b/Client/Assets/Scripts/Base/Setting.cs index d60d273..8dca221 100644 --- a/Client/Assets/Scripts/Base/Setting.cs +++ b/Client/Assets/Scripts/Base/Setting.cs @@ -11,10 +11,11 @@ namespace Base [System.Serializable] public class GameSettings { - public float progressStepDuration = 1f; - public float exitAnimationDuration = 2f; + public float progressStepDuration = 0.5f; + public float exitAnimationDuration = 1f; public bool developerMode = false; public bool friendlyFire = false; + public bool showMiniMap = true; public float globalVolume = 1.0f; public WindowMode currentWindowMode = WindowMode.Fullscreen; public Vector2Int windowResolution = new(1920, 1080); @@ -47,7 +48,7 @@ namespace Base public void SaveSettings() { - string json = JsonConvert.SerializeObject(CurrentSettings); + var json = JsonConvert.SerializeObject(CurrentSettings); PlayerPrefs.SetString("GameSettings", json); PlayerPrefs.Save(); } @@ -55,7 +56,7 @@ namespace Base { if (PlayerPrefs.HasKey("GameSettings")) { - string json = PlayerPrefs.GetString("GameSettings"); + var json = PlayerPrefs.GetString("GameSettings"); CurrentSettings = JsonConvert.DeserializeObject(json); } @@ -64,6 +65,11 @@ namespace Base ApplyWindowSettings(); } + public void Apply() + { + ApplyAudioSettings(); + ApplyWindowSettings(); + } // 应用音频设置 private void ApplyAudioSettings() { diff --git a/Client/Assets/Scripts/Base/UIInputControl.cs b/Client/Assets/Scripts/Base/UIInputControl.cs index b6f12ca..4eea0e6 100644 --- a/Client/Assets/Scripts/Base/UIInputControl.cs +++ b/Client/Assets/Scripts/Base/UIInputControl.cs @@ -105,7 +105,7 @@ namespace Base // 如果窗口是独占的,隐藏所有其他窗口 if (windowToShow.exclusive) { - List windowsToHide = new List(_visibleWindows); + var windowsToHide = new List(_visibleWindows); foreach (var visibleWindow in windowsToHide) { Hide(visibleWindow); @@ -121,6 +121,21 @@ namespace Base needUpdate = true; } + public void Show(string uiName) + { + foreach (var window in _allWindows) + { + if (window.name == uiName) + { + Show(window); + return; + } + } + Debug.LogWarning($"未找到窗口{uiName}"); + } + + + /// /// 公开的隐藏窗口方法 /// @@ -133,13 +148,31 @@ namespace Base windowToHide.Hide(); needUpdate = true; } + public void Hide(string uiName) + { + foreach (var visibleWindow in _visibleWindows) + { + if (visibleWindow.name == uiName) + { + Hide(visibleWindow); + break; + } + } + } + public void HideAll() + { + foreach (var visibleWindow in _visibleWindows) + { + Hide(visibleWindow); + } + } /// /// 根据当前所有可见窗口的 needPause 属性来更新游戏时钟的暂停状态 /// private void UpdatePauseState() { - bool shouldPause = _visibleWindows.Any(w => w.needPause); + var shouldPause = _visibleWindows.Any(w => w.needPause); if (Base.Clock.Instance.Pause != shouldPause) { Base.Clock.Instance.Pause = shouldPause; @@ -170,7 +203,7 @@ namespace Base { SceneManager.sceneLoaded += OnSceneLoaded; - // RegisterAllWindows(); + RegisterAllWindows(); } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) diff --git a/Client/Assets/Scripts/CameraControl/CameraControl.cs b/Client/Assets/Scripts/CameraControl/CameraControl.cs index fa1487f..13e6161 100644 --- a/Client/Assets/Scripts/CameraControl/CameraControl.cs +++ b/Client/Assets/Scripts/CameraControl/CameraControl.cs @@ -1,61 +1,209 @@ using Base; using UnityEngine; +using UnityEngine.SceneManagement; namespace CameraControl { public class CameraControl : Utils.MonoSingleton, ITick, ITickUI { - // 当前被聚焦的目标实体 - public Entity.Entity focusedEntity = null; - // Camera movement variables + [SerializeField] private float _zoomSpeed = 5f; + [SerializeField] private float _minZoom = 2f; + [SerializeField] private float _maxZoom = 20f; + [SerializeField] private float _focusLerpSpeed = 5f; + private Vector3 _dragOrigin; private bool _isDragging = false; - private float _zoomSpeed = 5f; - private float _minZoom = 2f; - private float _maxZoom = 20f; private Camera _camera; + + private int dimensionId; + private string[] dimensionList; + + + private void OnDestroy() + { + // 移除事件监听 + SceneManager.sceneLoaded -= OnSceneLoaded; + } protected override void OnStart() { - _camera = Camera.main; + // 注册场景加载事件。请注意,MonoSingleton中的OnStart通常由Awake调用。 + // 真正的Init调用已移至Start方法,以确保Program.Instance已完成其Awake阶段的初始化。 + SceneManager.sceneLoaded += OnSceneLoaded; + } + + private void Start() + { + // 在Start中调用Init,确保所有依赖的单例(如Program.Instance)已完成Awake阶段的初始化。 + Init(); + } + + private void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + // 场景加载完成后调用 Init 方法,重新获取相机引用并初始化维度状态。 + // 这确保了如果CameraControl是DontDestroyOnLoad,在切换场景后也能正确工作。 + Init(); + } + + + private void Init() + { + // 确保相机引用有效 if (_camera == null) { - _camera = FindFirstObjectByType(); + _camera = Camera.main; + if (_camera == null) + { + _camera = FindFirstObjectByType(); + } + } + + if (_camera == null) + { + Debug.LogError("No Camera found in the scene! CameraControl functionalities will be limited."); + return; // 如果没有相机,则无法进行后续初始化 + } + + // 初始化维度数据 (假设 Program.Instance 总是已初始化) + dimensionId = 0; // 默认从第一个维度开始 + dimensionList = Program.Instance.Dimensions; + if (dimensionList != null && dimensionList.Length > 0) + { + SetCameraPositionForDimension(0); + } + else + { + Debug.LogWarning("Dimension list is empty or null from Program.Instance. Cannot set initial camera position for dimensions."); } } + + public void NextDimension() + { + if (_camera == null) + { + Debug.LogWarning("Camera reference is null, cannot switch dimensions."); + return; + } + if (dimensionList == null || dimensionList.Length == 0) + { + Debug.LogWarning("Dimension list is empty."); + return; + } + + // 1. 保存当前相机的真实位置到当前维度 (假设 Program.Instance 总是已初始化) + // 维度ID范围检查仍然保留,因为这是数组访问的安全保障 + if (dimensionId >= 0 && dimensionId < dimensionList.Length) + { + // Program.Instance 假设不会为 null + var currentDimension = Program.Instance.GetDimension(dimensionList[dimensionId]); + if (currentDimension != null) + { + currentDimension.cameraPosition = _camera.transform.position; + // Debug.Log($"Saved camera position {currentDimension.cameraPosition} for dimension {dimensionList[dimensionId]} (ID: {dimensionId})"); + } + else + { + Debug.LogWarning($"Could not find dimension object for ID {dimensionId} ({dimensionList[dimensionId]}) to save camera position."); + } + } + else + { + Debug.LogWarning($"Current dimensionId ({dimensionId}) is out of bounds for saving camera position (dimensionList length: {dimensionList.Length})."); + } + + // 2. 更新 dimensionId,形成循环 + dimensionId = (dimensionId + 1) % dimensionList.Length; + + // 3. 更新相机位置到新维度 + SetCameraPositionForDimension(dimensionId); + } + + private void SetCameraPositionForDimension(int id) + { + if (_camera == null) + { + Debug.LogWarning("Camera reference is null, cannot set camera position."); + return; + } + if (dimensionList == null || id < 0 || id >= dimensionList.Length) + { + Debug.LogWarning($"Dimension ID {id} is out of bounds or dimension list is null/empty."); + return; + } + // Program.Instance 假设不会为 null + + // 确保获取到的 Dimension 对象不为 null + var dimension = Program.Instance.GetDimension(dimensionList[id]); + if (dimension) + { + Vector3 cameraPosition = dimension.cameraPosition; + _camera.transform.position = cameraPosition; + } + else + { + Debug.LogWarning($"Dimension object for ID {id} ({dimensionList[id]}) is null. Cannot set camera position."); + } + } + public void Tick() { - if (focusedEntity) + if (_camera == null) return; // 确保相机存在 + + // 假设 Program.Instance 总是已初始化 + if (Program.Instance.FocusedEntity) { - // Follow the focused entity's position var targetPosition = new Vector3( - focusedEntity.Position.x, - focusedEntity.Position.y, + Program.Instance.FocusedEntity.Position.x, + Program.Instance.FocusedEntity.Position.y, _camera.transform.position.z); + // 使用 deltaTime 进行平滑的相机跟随 _camera.transform.position = Vector3.Lerp( _camera.transform.position, targetPosition, - Time.fixedDeltaTime * 5f); + Time.deltaTime * _focusLerpSpeed); + } + + if (Input.GetKeyDown(KeyCode.Tab)) + { + NextDimension(); } } - + public void TickUI() { + if (!_camera) // 确保相机存在 + return; + HandleMiddleMouseDrag(); - HandleMouseZoom(); + // HandleMouseZoom(); + } + + public void SetPosition(Vector3 position) + { + if (_camera) + _camera.transform.position = position; + else + Debug.LogWarning("Camera reference is null, cannot set position."); } private void HandleMiddleMouseDrag() { + if (_camera == null) return; // 确保相机存在 + // Start drag if (Input.GetMouseButtonDown(2)) // Middle mouse button { _dragOrigin = _camera.ScreenToWorldPoint(Input.mousePosition); _isDragging = true; - focusedEntity = null; // Clear focus when manually moving camera + // 假设 Program.Instance 总是已初始化 + if (Program.Instance.FocusedEntity) + { + Program.Instance.FocusedEntity.PlayerControlled = false; + Program.Instance.SetFocusedEntity(null); + } } // During drag @@ -74,12 +222,12 @@ namespace CameraControl private void HandleMouseZoom() { + if (_camera == null) return; // 确保相机存在 + var scroll = Input.GetAxis("Mouse ScrollWheel"); if (scroll == 0) return; var newSize = _camera.orthographicSize - scroll * _zoomSpeed; _camera.orthographicSize = Mathf.Clamp(newSize, _minZoom, _maxZoom); } - - } -} \ No newline at end of file +} diff --git a/Client/Assets/Scripts/CameraControl/MiniMapCamera.cs b/Client/Assets/Scripts/CameraControl/MiniMapCamera.cs new file mode 100644 index 0000000..62e7cf2 --- /dev/null +++ b/Client/Assets/Scripts/CameraControl/MiniMapCamera.cs @@ -0,0 +1,15 @@ +using UnityEngine; + +namespace CameraControl +{ + public class MiniMapCamera : MonoBehaviour, Base.ITick + { + public void Tick() + { + if (Program.Instance.FocusedEntity) + { + transform.position = Program.Instance.FocusedEntity.transform.position + new Vector3(0, 0, -10); + } + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/CameraControl/MiniMapCamera.cs.meta b/Client/Assets/Scripts/CameraControl/MiniMapCamera.cs.meta new file mode 100644 index 0000000..eec35f5 --- /dev/null +++ b/Client/Assets/Scripts/CameraControl/MiniMapCamera.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ef73ec15d93e4f099081b221e275834d +timeCreated: 1756173994 \ No newline at end of file diff --git a/Client/Assets/Scripts/Configs/ConfigProcessor.cs b/Client/Assets/Scripts/Configs/ConfigProcessor.cs index d4bc34e..3825e27 100644 --- a/Client/Assets/Scripts/Configs/ConfigProcessor.cs +++ b/Client/Assets/Scripts/Configs/ConfigProcessor.cs @@ -271,17 +271,17 @@ namespace Configs public static Dictionary LoadResources(string path) where T : UnityEngine.Object { // 创建一个字典来存储资源名称和加载好的资源 - Dictionary resourceDict = new Dictionary(); + var resourceDict = new Dictionary(); // 加载指定路径下的所有资源 - T[] resources = Resources.LoadAll(path); + var resources = Resources.LoadAll(path); - foreach (T resource in resources) + foreach (var resource in resources) { if (resource != null) { // 获取资源名称并存入字典 - string resourceName = resource.name; + var resourceName = resource.name; resourceDict[resourceName] = resource; } } @@ -314,7 +314,7 @@ namespace Configs try { // 使用 using 自动管理 FileStream 的生命周期 - using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) + using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { fs.Seek(0, SeekOrigin.Begin); // 将游标移动到文件开头(可选) bytes = new byte[fs.Length]; // 创建一个字节数组来存储文件内容 @@ -328,10 +328,14 @@ namespace Configs } // 创建一个默认大小的 Texture2D 对象 - Texture2D texture = new Texture2D(2, 2); // 初始大小为 2x2,LoadImage 会自动调整大小 + var texture = new Texture2D(2, 2, TextureFormat.RGBA32, false); // 初始大小为 2x2,LoadImage 会自动调整大小 if (texture.LoadImage(bytes)) // 加载图片数据 { + // 设置过滤模式为 Point (无插值) + texture.filterMode = FilterMode.Point; + texture.wrapMode = TextureWrapMode.Clamp; // 防止边缘出现意外拉伸 + return texture; // 返回加载成功的 Texture2D 对象 } else diff --git a/Client/Assets/Scripts/Data/AttributesDef.cs b/Client/Assets/Scripts/Data/AttributesDef.cs index c6023f5..e5524b6 100644 --- a/Client/Assets/Scripts/Data/AttributesDef.cs +++ b/Client/Assets/Scripts/Data/AttributesDef.cs @@ -11,18 +11,5 @@ namespace Data public int attackSpeed = 2; public int attackRange = 3; public int attackTargetCount = 1; - public AttributesDef Clone() - { - return new AttributesDef - { - health = this.health, - moveSpeed = this.moveSpeed, - attack = this.attack, - defense = this.defense, - attackSpeed = this.attackSpeed, - attackRange = this.attackRange, - attackTargetCount = this.attackTargetCount - }; - } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/BehaviorTreeDef.cs b/Client/Assets/Scripts/Data/BehaviorTreeDef.cs index 2963289..2960026 100644 --- a/Client/Assets/Scripts/Data/BehaviorTreeDef.cs +++ b/Client/Assets/Scripts/Data/BehaviorTreeDef.cs @@ -20,11 +20,12 @@ namespace Data value = xmlDef.Attribute("value")?.Value; var nodes = xmlDef.Elements("Node"); - if (!nodes.Any()) + var xElements = nodes as XElement[] ?? nodes.ToArray(); + if (!xElements.Any()) return true; // 没有子节点也是有效的 List children = new(); - foreach (var node in nodes) + foreach (var node in xElements) { var childNode = new BehaviorTreeDef(); if (!childNode.Init(node)) diff --git a/Client/Assets/Scripts/Data/DefinePack.cs b/Client/Assets/Scripts/Data/DefinePack.cs index 21fd3a8..a352a59 100644 --- a/Client/Assets/Scripts/Data/DefinePack.cs +++ b/Client/Assets/Scripts/Data/DefinePack.cs @@ -11,17 +11,31 @@ using Object = System.Object; namespace Data { + /// + /// 表示模组包的基本信息 + /// public class PackAbout { - public string name; - public string description; - public string author; - public string version; - public string packID; + public string Name { get; private set; } + public string Description { get; private set; } + public string Author { get; private set; } + public string Version { get; private set; } + public string PackID { get; private set; } - public string[] necessary; - public string[] after; - public string[] before; + public string[] Necessary { get; private set; } + public string[] After { get; private set; } + public string[] Before { get; private set; } + + private const string RootElementName = "About"; + private const string ElementName_Name = "name"; + private const string ElementName_Description = "description"; + private const string ElementName_Author = "author"; + private const string ElementName_Version = "version"; + private const string ElementName_PackID = "packID"; + private const string ElementName_Sort = "sort"; + private const string ElementName_Before = "before"; + private const string ElementName_After = "after"; + private const string ElementName_Necessary = "necessary"; /// /// 使用静态方法从 XML 文档创建 PackAbout 实例。 @@ -30,28 +44,28 @@ namespace Data /// 初始化的 PackAbout 实例。 public static PackAbout FromXDocument(XDocument doc) { - var aboutElement = doc.Element("About"); - if (aboutElement == null) throw new ArgumentException("XML 文档无效,根节点为空或不是 'About'。"); + var aboutElement = doc.Element(RootElementName); + if (aboutElement == null) throw new ArgumentException($"XML 文档无效,根节点为空或不是 '{RootElementName}'。"); PackAbout result = new(); - result.name = aboutElement.Element("name")?.Value ?? "Unknown"; - result.description = aboutElement.Element("description")?.Value ?? "Unknown"; - result.author = aboutElement.Element("author")?.Value ?? "Unknown"; - result.version = aboutElement.Element("version")?.Value ?? "Unknown"; - result.packID = aboutElement.Element("packID")?.Value ?? "Unknown"; + result.Name = aboutElement.Element(ElementName_Name)?.Value ?? "Unknown"; + result.Description = aboutElement.Element(ElementName_Description)?.Value ?? "Unknown"; + result.Author = aboutElement.Element(ElementName_Author)?.Value ?? "Unknown"; + result.Version = aboutElement.Element(ElementName_Version)?.Value ?? "Unknown"; + result.PackID = aboutElement.Element(ElementName_PackID)?.Value ?? "Unknown"; - var sortElement = aboutElement.Element("sort"); + var sortElement = aboutElement.Element(ElementName_Sort); if (sortElement != null) { - result.before = GetElementValues(sortElement.Element("before")); - result.after = GetElementValues(sortElement.Element("after")); - result.necessary = GetElementValues(sortElement.Element("necessary")); + result.Before = GetElementValues(sortElement.Element(ElementName_Before)); + result.After = GetElementValues(sortElement.Element(ElementName_After)); + result.Necessary = GetElementValues(sortElement.Element(ElementName_Necessary)); } else { - result.before = Array.Empty(); - result.after = Array.Empty(); - result.necessary = Array.Empty(); + result.Before = Array.Empty(); + result.After = Array.Empty(); + result.Necessary = Array.Empty(); } return result; @@ -81,30 +95,56 @@ namespace Data var sb = new StringBuilder(); // 基础字段(单行) - sb.AppendLine($"{"Name:",labelWidth}{name,valueWidth}"); - sb.AppendLine($"{"Description:",labelWidth}{description,valueWidth}"); - sb.AppendLine($"{"Author:",labelWidth}{author,valueWidth}"); - sb.AppendLine($"{"Version:",labelWidth}{version,valueWidth}"); - sb.AppendLine($"{"PackID:",labelWidth}{packID,valueWidth}"); + sb.AppendLine($"{"Name:",labelWidth}{Name,valueWidth}"); + sb.AppendLine($"{"Description:",labelWidth}{Description,valueWidth}"); + sb.AppendLine($"{"Author:",labelWidth}{Author,valueWidth}"); + sb.AppendLine($"{"Version:",labelWidth}{Version,valueWidth}"); + sb.AppendLine($"{"PackID:",labelWidth}{PackID,valueWidth}"); // 数组字段(多行,每项缩进) sb.AppendLine( - $"{"Necessary:",labelWidth}{string.Join(", ", necessary ?? Array.Empty()),valueWidth}"); - sb.AppendLine($"{"After:",labelWidth}{string.Join(", ", after ?? Array.Empty()),valueWidth}"); - sb.AppendLine($"{"Before:",labelWidth}{string.Join(", ", before ?? Array.Empty()),valueWidth}"); + $"{"Necessary:",labelWidth}{string.Join(", ", Necessary ?? Array.Empty()),valueWidth}"); + sb.AppendLine($"{"After:",labelWidth}{string.Join(", ", After ?? Array.Empty()),valueWidth}"); + sb.AppendLine($"{"Before:",labelWidth}{string.Join(", ", Before ?? Array.Empty()),valueWidth}"); return sb.ToString(); } } + + /// + /// 表示一个模组包的定义集合 + /// public class DefinePack { private const string CoreNamespace = "Data."; + // 优化点7:将魔法字符串转换为常量 + private const string RootElementName_About = "About"; + private const string RootElementName_Define = "Define"; + + // 优化点1和2:反射缓存和改进的类型查找 + private static readonly Dictionary _typeCache = new(); + private static readonly Dictionary _constructorCache = new(); + private static readonly Dictionary _fieldCache = new(); + private static readonly List _assembliesToSearch = new(); // 缓存要搜索的程序集 + + static DefinePack() + { + // 优化点2:一次性初始化要搜索的程序集。 + // 为简单起见,我们将扫描所有当前加载的程序集。 + // 在实际游戏中,您可能希望显式添加特定的程序集 + // 如 Assembly.Load("YourGameLogicAssembly") 或按名称过滤。 + _assembliesToSearch.AddRange(AppDomain.CurrentDomain.GetAssemblies()); + // 可选:过滤或添加特定程序集: + // _assembliesToSearch.Add(Assembly.GetExecutingAssembly()); // 添加当前程序集 + // _assembliesToSearch.Add(Assembly.Load("AnotherAssemblyContainingDefines")); + } + /// /// define类别及其定义 /// - public Dictionary> defines=new(); + public Dictionary> defines = new(); public PackAbout packAbout; public string packID; @@ -114,15 +154,17 @@ namespace Data { get { - return packAbout.name; + // 优化点5:Name属性的空值安全性 + return packAbout?.Name ?? "Unnamed Pack"; // 使用 PackAbout.Name 属性 } } public bool LoadPack(string packPath) { - packRootPath=System.IO.Path.GetFullPath(packPath);; + packRootPath = System.IO.Path.GetFullPath(packPath); var packDatas = ConfigProcessor.LoadXmlFromPath(packPath); - var aboutXmls = FindDocumentsWithRootName(packDatas, "About"); + // 优化点7:使用常量 + var aboutXmls = FindDocumentsWithRootName(packDatas, RootElementName_About); if (aboutXmls == null || aboutXmls.Count < 1) { Debug.LogError("包缺少配置文件,加载跳过"); @@ -131,10 +173,13 @@ namespace Data var aboutXml = aboutXmls[0]; packAbout = PackAbout.FromXDocument(aboutXml); - packID = packAbout.packID; - if (aboutXmls.Count > 1) Debug.LogWarning($"{packAbout.name}包拥有多个配置文件,系统选择了加载序的第一个,请避免这种情况"); + // 优化点3:使用 PackAbout.PackID 属性 + packID = packAbout.PackID; + // 优化点3:使用 PackAbout.Name 属性 + if (aboutXmls.Count > 1) Debug.LogWarning($"{packAbout.Name}包拥有多个配置文件,系统选择了加载序的第一个,请避免这种情况"); - var defineXmls = FindDocumentsWithRootName(packDatas, "Define"); + // 优化点7:使用常量 + var defineXmls = FindDocumentsWithRootName(packDatas, RootElementName_Define); // Debug.Log($"Define文件数量{defineXmls.Count}"); foreach (var defineXml in defineXmls) LoadDefines(defineXml); return true; @@ -143,7 +188,8 @@ namespace Data private void LoadDefines(XDocument defineDoc) { var rootElement = defineDoc.Root; - if (rootElement == null || rootElement.Name != "Define") + // 优化点7:使用常量 + if (rootElement == null || rootElement.Name != RootElementName_Define) return; foreach (var element in rootElement.Elements()) @@ -151,7 +197,7 @@ namespace Data var className = element.Name.ToString(); if (string.IsNullOrEmpty(className)) continue; - var def = LoadDefineClass(element,element.Name.ToString()); + var def = LoadDefineClass(element, className); if (def == null) continue; def.packID = packID; @@ -160,6 +206,7 @@ namespace Data defines[className].Add(def); } } + /// /// 根据指定的 XML 元素 () 和类名 (), /// 动态加载并初始化一个继承自 的类实例。 @@ -178,44 +225,47 @@ namespace Data /// 如果类存在且满足条件,则尝试调用其 方法进行初始化。 /// 如果初始化失败,则使用默认初始化方法 ()。 /// - public static Define LoadDefineClass(XElement defineDoc,string className) + public static Define LoadDefineClass(XElement defineDoc, string className) { - var assembly = Assembly.GetExecutingAssembly(); - - Type type; - if (!className.Contains('.')) + // 优化点1和2:反射缓存和改进的类型查找 + if (!_typeCache.TryGetValue(className, out var type)) { - // 尝试拼接默认命名空间 + // 首先尝试使用 CoreNamespace var fullClassName = CoreNamespace + className; - type = assembly.GetType(fullClassName); + type = _assembliesToSearch.Select(a => a.GetType(fullClassName)).FirstOrDefault(t => t != null); - // 如果拼接命名空间后仍找不到,尝试直接查找(可能是全局命名空间下的类) - if (type == null) type = assembly.GetType(className); - } - else - { - // 直接查找 - type = assembly.GetType(className); + // 如果未找到,尝试不使用 CoreNamespace(可能在全局命名空间中或已经是完全限定名) + if (type == null) + { + type = _assembliesToSearch.Select(a => a.GetType(className)).FirstOrDefault(t => t != null); + } + + if (type == null) + { + Debug.LogError($"未定义的类型: {className}"); + return null; + } + _typeCache[className] = type; } - if (type == null) + // 优化点1:构造函数缓存 + if (!_constructorCache.TryGetValue(type, out var constructor)) { - Debug.LogError($"未定义的类型: {className}"); - return null; + constructor = type.GetConstructor(Type.EmptyTypes); + if (constructor == null) + { + Debug.LogError($"{className} 必须包含无参构造函数"); + return null; + } + _constructorCache[type] = constructor; } - var constructor = type.GetConstructor(Type.EmptyTypes); - if (constructor == null) - { - Debug.LogError($"{className} 必须包含无参构造函数"); - return null; - } // 3. 创建实例 object instance; try { - instance = Activator.CreateInstance(type); + instance = constructor.Invoke(null); // 使用缓存的构造函数 } catch (Exception ex) { @@ -231,10 +281,11 @@ namespace Data } if (define.Init(defineDoc)) return define; - DefaultInitDefine(define,defineDoc, type); + DefaultInitDefine(define, defineDoc, type); return define; } + /// /// 初始化指定的 对象,根据 中的 XML 元素内容, /// 将对应的字段值赋给 对象。 @@ -251,9 +302,14 @@ namespace Data /// 如果找到匹配的子元素,则将其值转换为字段的类型并赋值给字段。 /// 如果字段类型继承自 ,则递归调用 方法进行加载。 /// - public static void DefaultInitDefine(Define define,XElement defineDoc,Type defineType) + public static void DefaultInitDefine(Define define, XElement defineDoc, Type defineType) { - var fields = defineType.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic); + // 优化点1:FieldInfo 缓存 + if (!_fieldCache.TryGetValue(defineType, out var fields)) + { + fields = defineType.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic); + _fieldCache[defineType] = fields; + } // 遍历字段并尝试从 XElement 中赋值 foreach (var field in fields) @@ -263,82 +319,99 @@ namespace Data if (element != null) try { - Object value; - if (IsFieldTypeInheritedFrom(field, typeof(Define))) - { - if (element.HasElements) - { - value = LoadDefineClass(element, field.FieldType.Name); - } - else - { - var reference = (Define)Activator.CreateInstance(field.FieldType); - reference.isReferene = true; - reference.description=field.FieldType.Name; - reference.label = field.Name; - reference.defName = element.Value; - value = reference; - } - } - else if(field.FieldType.IsArray||typeof(IList).IsAssignableFrom(field.FieldType)) - { - value = ProcessArrayField(field, element); - } - else if (field.FieldType.IsEnum) - { - value = Enum.Parse(field.FieldType, element.Value); - } - else - { - value = Convert.ChangeType(element.Value, field.FieldType); - } + // 优化点4:重构 ProcessArrayField 并引入通用转换辅助方法 + var value = ConvertXElementValueToType(element, field.FieldType); field.SetValue(define, value); } catch (Exception ex) { - Debug.LogWarning($"Error setting field ,field name:{field.Name}; value: {element.Value}; error: {ex.Message}"); + Debug.LogWarning($"设置字段时出错,字段名:{field.Name}; 值: {element.Value}; 错误: {ex.Message}"); } } } - private static object ProcessArrayField(FieldInfo field, XElement element) + // 优化点4:新的辅助方法,用于将 XElement 值转换为特定类型 + private static object ConvertXElementValueToType(XElement element, Type targetType) { - var elementType = field.FieldType.GetElementType(); - if (elementType == null) return null; - - var arrayElements = new List(); - foreach (var liElement in element.Elements()) + if (IsTypeInheritedFrom(targetType, typeof(Define))) { - if (elementType.IsSubclassOf(typeof(Define))) + if (element.HasElements) { - var nestedDefine = (Define)Activator.CreateInstance(elementType); - DefaultInitDefine(nestedDefine, liElement, elementType); - arrayElements.Add(nestedDefine); - } - else if (elementType.IsArray) // 嵌套数组处理 - { - // 递归处理嵌套数组 - var nestedArray = ProcessArrayField( - new { FieldType = elementType }.GetType().GetField("FieldType"), - liElement - ); - arrayElements.Add(nestedArray); + return LoadDefineClass(element, targetType.Name); } else { - // 基本类型处理 - arrayElements.Add(Convert.ChangeType(liElement.Value, elementType)); + // 引用另一个 Define + var reference = (Define)Activator.CreateInstance(targetType); + reference.isReferene = true; + reference.description = targetType.Name; + reference.label = element.Name.LocalName; // 使用元素的名称作为标签 + reference.defName = element.Value; + return reference; } } - - // 构建结果数组 - var resultArray = Array.CreateInstance(elementType, arrayElements.Count); - for (var i = 0; i < arrayElements.Count; i++) + else if (targetType.IsArray || typeof(IList).IsAssignableFrom(targetType)) { - resultArray.SetValue(arrayElements[i], i); + return ProcessArrayField(targetType, element); + } + else if (targetType.IsEnum) + { + return Enum.Parse(targetType, element.Value); + } + else + { + return Convert.ChangeType(element.Value, targetType); } - return resultArray; } + + // 优化点4:修改 ProcessArrayField 以直接接受 Type + private static object ProcessArrayField(Type fieldType, XElement element) + { + // 获取集合的元素类型 + var elementType = fieldType.IsArray + ? fieldType.GetElementType() + : fieldType.GetGenericArguments().FirstOrDefault(); // 使用 FirstOrDefault 以确保安全 + + if (elementType == null) + { + Debug.LogWarning($"无法确定类型为 {fieldType.Name} 的集合字段的元素类型"); + return null; + } + + var arrayElements = new List(); + + // 遍历 XML 子元素 + foreach (var liElement in element.Elements()) + { + // 对每个项目使用新的辅助方法 + arrayElements.Add(ConvertXElementValueToType(liElement, elementType)); + } + + // 根据目标字段的类型构造结果 + if (fieldType.IsArray) + { + var resultArray = Array.CreateInstance(elementType, arrayElements.Count); + for (var i = 0; i < arrayElements.Count; i++) + { + resultArray.SetValue(arrayElements[i], i); + } + return resultArray; + } + else if (typeof(IList).IsAssignableFrom(fieldType)) + { + var listType = typeof(List<>).MakeGenericType(elementType); + var resultList = (IList)Activator.CreateInstance(listType); + foreach (var item in arrayElements) + { + resultList.Add(item); + } + return resultList; + } + + return null; + } + + /// /// 从 ListXDocument 中查找指定根元素名称的文档。 /// @@ -347,7 +420,7 @@ namespace Data /// 符合条件的 XML 文档列表。 public static List FindDocumentsWithRootName(List xmlDocuments, string rootName) { - // Using LINQ to Objects for a more concise solution + // 使用 LINQ to Objects 实现更简洁的解决方案 var result = xmlDocuments .Where(doc => doc.Root != null && doc.Root.Name.LocalName == rootName) .ToList(); @@ -369,7 +442,8 @@ namespace Data // PackAbout 对象 sb.AppendLine("=== PackAbout ==="); - sb.AppendLine(packAbout?.ToString() ?? "N/A"); // 调用 PackAbout 的 ToString() + // 优化点3:使用 PackAbout.ToString() + sb.AppendLine(packAbout?.ToString() ?? "N/A"); sb.AppendLine(); // 字典字段(defines) @@ -383,28 +457,38 @@ namespace Data sb.AppendLine(); // 每个类别后空一行 } else - sb.AppendLine("No defines found."); + sb.AppendLine("未找到定义。"); return sb.ToString(); } - + /// - /// 检查字段的类型是否继承自指定的类 + /// 检查字段的类型是否继承自指定的类 (严格派生,不包括基类本身) /// /// 字段信息 /// 要检查的基类类型 - /// 如果字段的类型是基类或其派生类,则返回 true + /// 如果字段的类型是基类的严格派生类,则返回 true + // 优化点6:为 IsFieldTypeInheritedFrom 进行语义澄清 public static bool IsFieldTypeInheritedFrom(FieldInfo field, Type baseType) { // 获取字段的类型 var fieldType = field.FieldType; // 如果字段的类型为 null 或不是基类的派生类,则返回 false - if (!baseType.IsAssignableFrom(fieldType)) - return false; - - // 如果字段的类型直接是基类或其派生类,则返回 true - return fieldType != baseType && baseType.IsAssignableFrom(fieldType); + // 严格派生:不包括基类本身 + return fieldType != null && fieldType != baseType && baseType.IsAssignableFrom(fieldType); } + /// + /// 检查一个类型是否继承自指定的基类 (严格派生,不包括基类本身) + /// + /// 要检查的类型 + /// 要检查的基类类型 + /// 如果类型是基类的严格派生类,则返回 true + // 在 ConvertXElementValueToType 中使用的新类型检查辅助方法 + public static bool IsTypeInheritedFrom(Type type, Type baseType) + { + return type != null && type != baseType && baseType.IsAssignableFrom(type); + } } + } \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/DrawingOrderDef.cs b/Client/Assets/Scripts/Data/DrawingOrderDef.cs index 1ccea9b..ee4c5be 100644 --- a/Client/Assets/Scripts/Data/DrawingOrderDef.cs +++ b/Client/Assets/Scripts/Data/DrawingOrderDef.cs @@ -14,84 +14,221 @@ namespace Data Up } - public enum DrawNodeType + public enum EntityState { - Image, - Animation + Idle, + Walking, + MeleeAttack, + RangedAttack, } + public class DrawingOrderDef : Define { - public DrawNodeDef drawingOrder_down; - public DrawNodeDef drawingOrder_up; - public DrawNodeDef drawingOrder_left; - public DrawNodeDef drawingOrder_right; - public string texturePath; - public float pixelsPerUnit = 16; - - public DrawNodeDef GetDrawingOrder(Orientation orientation, out Orientation sourceOrientation) + public DrawNodeDef idle_down; + public DrawNodeDef idle_up; + public DrawNodeDef idle_left; + public DrawNodeDef idle_right; + + public DrawNodeDef walk_down; + public DrawNodeDef walk_up; + public DrawNodeDef walk_left; + public DrawNodeDef walk_right; + + public DrawNodeDef meleeAttack_down; + public DrawNodeDef meleeAttack_up; + public DrawNodeDef meleeAttack_left; + public DrawNodeDef meleeAttack_right; + + public DrawNodeDef rangedAttack_down; + public DrawNodeDef rangedAttack_up; + public DrawNodeDef rangedAttack_left; + public DrawNodeDef rangedAttack_right; + + public DrawNodeDef GetDrawNodeDef(EntityState state, Orientation orientation, + out Orientation? fallbackOrientation) { - // 定义一个临时变量用于存储结果 - DrawNodeDef result = null; + fallbackOrientation = null; - // 初始化 sourceOrientation 为默认值 - sourceOrientation = Orientation.Down; + // 根据状态和方向获取对应的DrawNodeDef + var result = GetDrawNodeDefInternal(state, orientation); - // 根据传入的 Orientation 获取对应的 DrawingOrderDef + if (result != null) + { + return result; + } + + // 如果找不到,按照规则查找替补 switch (orientation) { - case Orientation.Down: - result = drawingOrder_down; - sourceOrientation = Orientation.Down; - break; case Orientation.Up: - result = drawingOrder_up; - sourceOrientation = Orientation.Up; + // 上方向优先找下方向 + result = GetDrawNodeDefInternal(state, Orientation.Down); + if (result != null) + { + fallbackOrientation = Orientation.Down; + return result; + } + + // 其次找左右方向 + result = GetDrawNodeDefInternal(state, Orientation.Left); + if (result != null) + { + fallbackOrientation = Orientation.Left; + return result; + } + + result = GetDrawNodeDefInternal(state, Orientation.Right); + if (result != null) + { + fallbackOrientation = Orientation.Right; + return result; + } + break; + + case Orientation.Down: + // 下方向优先找上方向 + result = GetDrawNodeDefInternal(state, Orientation.Up); + if (result != null) + { + fallbackOrientation = Orientation.Up; + return result; + } + + // 其次找左右方向 + result = GetDrawNodeDefInternal(state, Orientation.Left); + if (result != null) + { + fallbackOrientation = Orientation.Left; + return result; + } + + result = GetDrawNodeDefInternal(state, Orientation.Right); + if (result != null) + { + fallbackOrientation = Orientation.Right; + return result; + } + + break; + case Orientation.Left: - result = drawingOrder_left; - sourceOrientation = Orientation.Left; + // 左方向优先找右方向 + result = GetDrawNodeDefInternal(state, Orientation.Right); + if (result != null) + { + fallbackOrientation = Orientation.Right; + return result; + } + + // 其次找上下方向 + result = GetDrawNodeDefInternal(state, Orientation.Up); + if (result != null) + { + fallbackOrientation = Orientation.Up; + return result; + } + + result = GetDrawNodeDefInternal(state, Orientation.Down); + if (result != null) + { + fallbackOrientation = Orientation.Down; + return result; + } + break; + case Orientation.Right: - result = drawingOrder_right; - sourceOrientation = Orientation.Right; + // 右方向优先找左方向 + result = GetDrawNodeDefInternal(state, Orientation.Left); + if (result != null) + { + fallbackOrientation = Orientation.Left; + return result; + } + + // 其次找上下方向 + result = GetDrawNodeDefInternal(state, Orientation.Up); + if (result != null) + { + fallbackOrientation = Orientation.Up; + return result; + } + + result = GetDrawNodeDefInternal(state, Orientation.Down); + if (result != null) + { + fallbackOrientation = Orientation.Down; + return result; + } + break; default: - throw new ArgumentException("Invalid orientation value."); + throw new ArgumentOutOfRangeException(nameof(orientation), orientation, null); } - // 如果当前方向的结果为空,则尝试用 drawingOrder_down 填充 - if (result == null) + // 如果所有替补都找不到,返回null + return null; + } + + private DrawNodeDef GetDrawNodeDefInternal(EntityState state, Orientation orientation) + { + // 根据状态和方向获取对应的DrawNodeDef + switch (state) { - result = drawingOrder_down; - sourceOrientation = Orientation.Down; // 更新 sourceOrientation + case EntityState.Idle: + switch (orientation) + { + case Orientation.Down: return idle_down; + case Orientation.Up: return idle_up; + case Orientation.Left: return idle_left; + case Orientation.Right: return idle_right; + } + + break; + + case EntityState.Walking: + switch (orientation) + { + case Orientation.Down: return walk_down; + case Orientation.Up: return walk_up; + case Orientation.Left: return walk_left; + case Orientation.Right: return walk_right; + } + + break; + + case EntityState.MeleeAttack: + switch (orientation) + { + case Orientation.Down: return meleeAttack_down; + case Orientation.Up: return meleeAttack_up; + case Orientation.Left: return meleeAttack_left; + case Orientation.Right: return meleeAttack_right; + } + + break; + + case EntityState.RangedAttack: + switch (orientation) + { + case Orientation.Down: return rangedAttack_down; + case Orientation.Up: return rangedAttack_up; + case Orientation.Left: return rangedAttack_left; + case Orientation.Right: return rangedAttack_right; + } + + break; } - // 如果 drawingOrder_down 仍然为空,则尝试用其他非空方向填充 - if (result != null) return result; - if (drawingOrder_up != null) - { - result = drawingOrder_up; - sourceOrientation = Orientation.Up; // 更新 sourceOrientation - } - else if (drawingOrder_left != null) - { - result = drawingOrder_left; - sourceOrientation = Orientation.Left; // 更新 sourceOrientation - } - else if (drawingOrder_right != null) - { - result = drawingOrder_right; - sourceOrientation = Orientation.Right; // 更新 sourceOrientation - } - - return result; + return null; } } public class DrawNodeDef : Define { - public List children = new(); - public DrawNodeType drawNodeType = DrawNodeType.Image; + public List textures = new(); + public List nodes = new(); public string nodeName; public Vector2 position = new(0, 0); public float FPS = 0.5f; @@ -101,19 +238,9 @@ namespace Data base.Init(xmlDef); nodeName = xmlDef.Attribute("name")?.Value??"noName"; - drawNodeType = Enum.TryParse(xmlDef.Attribute("type")?.Value, true, out DrawNodeType typeResult) - ? typeResult - : DrawNodeType.Image; - position = StringToVector(xmlDef.Attribute("position")?.Value ?? "(0 0)"); - FPS = float.TryParse(xmlDef.Attribute("FPS")?.Value, out float result) ? result : 1.0f; - foreach (var childNode in xmlDef.Elements()) - { - var child = new DrawNodeDef(); - child.Init(childNode); - children.Add(child); - } - return true; + FPS = float.TryParse(xmlDef.Attribute("FPS")?.Value, out var result) ? result : 1.0f; + return false; } public Vector2 StringToVector(string vectorDef) { @@ -132,34 +259,37 @@ namespace Data // 返回 Vector2 对象 return new Vector2(x, y); } - else - { - return Vector2.zero; - } - } - - // 判断两个 DrawNodeDef 是否相等 - public static bool AreEqual(DrawNodeDef a, DrawNodeDef b) - { - if (ReferenceEquals(a, b)) return true; // 如果是同一个对象,直接返回 true - if (ReferenceEquals(a, null) || ReferenceEquals(b, null)) return false; // 如果其中一个为 null,返回 false - // 比较基本属性 - if (a.drawNodeType != b.drawNodeType || - a.nodeName != b.nodeName || - a.position != b.position || - Math.Abs(a.FPS - b.FPS) > 0.001f) // 浮点数比较需要考虑精度 - return false; - // 比较 children 的数量 - if (a.children.Count != b.children.Count) - return false; - // 递归比较每个子节点 - for (var i = 0; i < a.children.Count; i++) - { - if (!AreEqual(a.children[i], b.children[i])) - return false; - } - return true; + return Vector2.zero; + } + /// + /// 计算动画执行一个周期的总时间(包括子对象)。 + /// 如果自身没有纹理,自身动画时间为0。 + /// 总周期取自身动画时间和所有子动画周期中的最大值。 + /// + /// 动画执行一个周期的总时间(秒)。 + public float GetAnimationCycleDuration() + { + if (FPS < 0.01) + { + return 1; + } + float ownDuration = 0f; + // 计算当前节点自身的动画周期时间 + // 由于 Init 方法已经处理了 FPS 的校验,FPS 保证大于 0 + if (textures.Count > 0) + { + ownDuration = textures.Count / FPS; + } + // 递归计算所有子节点的动画周期,并取其中最长的 + float maxChildDuration = 0f; + foreach (var childNode in nodes) + { + float childDuration = childNode.GetAnimationCycleDuration(); + maxChildDuration = Math.Max(maxChildDuration, childDuration); + } + // 整个 DrawNodeDef 的动画周期是自身动画周期和所有子动画周期中的最大值 + return Math.Max(ownDuration, maxChildDuration); } } diff --git a/Client/Assets/Scripts/Data/EntityDef.cs b/Client/Assets/Scripts/Data/EntityDef.cs index cba087d..4c7587c 100644 --- a/Client/Assets/Scripts/Data/EntityDef.cs +++ b/Client/Assets/Scripts/Data/EntityDef.cs @@ -7,15 +7,15 @@ namespace Data { public class EntityDef : Define { - public AttributesDef attributes; + public AttributesDef attributes = new(); public DrawingOrderDef drawingOrder; public BehaviorTreeDef behaviorTree; public AffiliationDef affiliation; - + } - + diff --git a/Client/Assets/Scripts/Data/EventDef.cs b/Client/Assets/Scripts/Data/EventDef.cs new file mode 100644 index 0000000..ed1d4b4 --- /dev/null +++ b/Client/Assets/Scripts/Data/EventDef.cs @@ -0,0 +1,21 @@ +namespace Data +{ + public enum EventType + { + None, + SpawnCharacter, + SpawnBuilding, + SpawnBullet, + SpawnPickup, + SpawnDefaultEntity, + } + public class EventDef : Define + { + public EventType eventType = EventType.None; + public EntityDef entityDef_Character; // 用于 EventType.SpawnCharacter + public BuildingDef entityDef_Building; // 用于 EventType.SpawnBuilding + public BulletDef entityDef_Bullet; // 用于 EventType.SpawnBullet + public ItemDef entityDef_Pickup; // 用于 EventType.SpawnPickup + public EventDef() { } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/EventDef.cs.meta b/Client/Assets/Scripts/Data/EventDef.cs.meta new file mode 100644 index 0000000..c01beed --- /dev/null +++ b/Client/Assets/Scripts/Data/EventDef.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 70b8a820a04c4cafad4c9b91b9d3b01d +timeCreated: 1756267922 \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/ResourcesDef.cs b/Client/Assets/Scripts/Data/ImageDef.cs similarity index 100% rename from Client/Assets/Scripts/Data/ResourcesDef.cs rename to Client/Assets/Scripts/Data/ImageDef.cs diff --git a/Client/Assets/Scripts/Data/ResourcesDef.cs.meta b/Client/Assets/Scripts/Data/ImageDef.cs.meta similarity index 100% rename from Client/Assets/Scripts/Data/ResourcesDef.cs.meta rename to Client/Assets/Scripts/Data/ImageDef.cs.meta diff --git a/Client/Assets/Scripts/Data/ItemDef.cs b/Client/Assets/Scripts/Data/ItemDef.cs index bde94f7..3f3cfc0 100644 --- a/Client/Assets/Scripts/Data/ItemDef.cs +++ b/Client/Assets/Scripts/Data/ItemDef.cs @@ -8,16 +8,13 @@ namespace Data Epic, Legendary } - public class ItemDef:Define + public class ItemDef : Define { - public ImageDef texture; + public float FPS = 0; + public string[] textures; public ItemRarity rarity = ItemRarity.Common; - public int maxStack = 1; // 最大堆叠数量,默认为1 + public int maxStack = 10; // 最大堆叠数量,默认为10 public bool ssEquippable = false; // 是否可装备 } - public class WeaponDef : ItemDef - { - public AttributesDef attributes; - } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/MonsterDef.cs b/Client/Assets/Scripts/Data/MonsterDef.cs index 0dcbcd8..740ae8f 100644 --- a/Client/Assets/Scripts/Data/MonsterDef.cs +++ b/Client/Assets/Scripts/Data/MonsterDef.cs @@ -2,6 +2,6 @@ namespace Data { public class MonsterDef:EntityDef { - + public WeaponDef weapon; } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/WeaponDef.cs b/Client/Assets/Scripts/Data/WeaponDef.cs new file mode 100644 index 0000000..b395e9b --- /dev/null +++ b/Client/Assets/Scripts/Data/WeaponDef.cs @@ -0,0 +1,21 @@ +namespace Data +{ + public enum WeaponType + { + Melee, // 近战武器 + Ranged // 远程武器 + } + public class WeaponDef : ItemDef + { + public WeaponType type = WeaponType.Melee; + public AttributesDef attributes; + public BulletDef bullet; + public DrawNodeDef attackAnimation; + public float attackDetectionTime = 0; + public WeaponDef() // 构造函数,用于设置武器的默认属性 + { + maxStack = 1; // 武器默认最大堆叠为1 + ssEquippable = true; // 武器默认可装备 + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/WeaponDef.cs.meta b/Client/Assets/Scripts/Data/WeaponDef.cs.meta new file mode 100644 index 0000000..101d2cb --- /dev/null +++ b/Client/Assets/Scripts/Data/WeaponDef.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3ed90cba91ce41e1ae443cf44a76c932 +timeCreated: 1756193931 \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Attributes.cs b/Client/Assets/Scripts/Entity/Attributes.cs new file mode 100644 index 0000000..4ddf75f --- /dev/null +++ b/Client/Assets/Scripts/Entity/Attributes.cs @@ -0,0 +1,27 @@ +using Data; + +namespace Entity +{ + public class Attributes + { + public int health = 10; + public float moveSpeed = 1; + public int attack = 1; + public int defense = 0; + public int attackSpeed = 2; + public int attackRange = 3; + public int attackTargetCount = 1; + public Attributes(AttributesDef def) + { + health = def.health; + moveSpeed = def.moveSpeed; + attack = def.attack; + defense = def.defense; + attackSpeed = def.attackSpeed; + attackRange = def.attackRange; + attackTargetCount = def.attackTargetCount; + } + public Attributes() + {} + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Attributes.cs.meta b/Client/Assets/Scripts/Entity/Attributes.cs.meta new file mode 100644 index 0000000..846d3ed --- /dev/null +++ b/Client/Assets/Scripts/Entity/Attributes.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9a009acc975a4e4b993eaa4b853f7109 +timeCreated: 1756184938 \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Bullet.cs b/Client/Assets/Scripts/Entity/Bullet.cs index 26a1c3e..7d19cca 100644 --- a/Client/Assets/Scripts/Entity/Bullet.cs +++ b/Client/Assets/Scripts/Entity/Bullet.cs @@ -30,7 +30,7 @@ namespace Entity private void OnTriggerEnter2D(Collider2D other) { var entity = other.GetComponent(); - if (!entity || entity == bulletSource) return; + if (!entity || entity == bulletSource || entity is Pickup) return; if (Managers.AffiliationManager.Instance.GetRelation(bulletSource.affiliation, entity.affiliation) != Relation.Friendly) { entity.OnHit(this); @@ -54,10 +54,8 @@ namespace Entity return; // 计算当前向上方向与目标方向之间的角度 - float angle = Mathf.Atan2(targetDirection.y, targetDirection.x) * Mathf.Rad2Deg; - - // 调整角度,因为默认贴图向上是0度,而Atan2计算的是相对于x轴的角度 - angle -= 90f; + var angle = Mathf.Atan2(targetDirection.y, targetDirection.x) * Mathf.Rad2Deg; + // 应用旋转 transform.rotation = Quaternion.Euler(0f, 0f, angle); diff --git a/Client/Assets/Scripts/Entity/Character.cs b/Client/Assets/Scripts/Entity/Character.cs index 7136db3..fe13a37 100644 --- a/Client/Assets/Scripts/Entity/Character.cs +++ b/Client/Assets/Scripts/Entity/Character.cs @@ -1,38 +1,100 @@ using System; using System.Linq; -using AI; -using Base; using Data; +using Item; +using Managers; using UnityEngine; +using Utils; +// 添加 System 命名空间以使用 Action namespace Entity { public class Character : Entity { - public CharacterDef characterDef; + private int _currentSelected; // 私有字段用于存储实际值 + + /// + /// 当前选中的背包槽位索引。 + /// 当此值被设置时,如果与旧值不同,将触发 OnCurrentSelectedChanged 事件。 + /// + public int CurrentSelected + { + get => _currentSelected; + set + { + var maxIndex = Inventory != null && Inventory.Capacity > 0 ? Inventory.Capacity - 1 : 0; + var clampedValue = Mathf.Clamp(value, 0, maxIndex); + _currentSelected = clampedValue; + } + } + + public Inventory Inventory { get; private set; } - private void Start() + + public override void Init(EntityDef entityDef) { - aiTree = new JobGiver_RandomWander(); - attributes = new AttributesDef(); + base.Init(entityDef); + + Inventory = new Inventory(this, 3); + + // 初始化 currentSelected。 + // 使用属性来设置,确保触发事件和范围检查。 + // 如果Inventory.Capacity为0,则currentSelected会被钳制到0。 + // 如果Inventory.Capacity为3,currentSelected=0是有效值。 + CurrentSelected = 0; } - public void Init() + /// + /// 尝试将指定物品添加到角色的背包中。 + /// + /// 要尝试添加的物品资源。 + /// 要尝试添加的数量。 + /// + /// 未成功添加到背包的物品数量。 + /// 如果返回0,表示所有物品都成功添加; + /// 如果返回quantity,表示未能添加任何物品; + /// 如果返回一个介于0和quantity之间的值,表示部分物品被添加。 + /// + public int TryPickupItem(ItemResource itemResource, int quantity) { - if (characterDef == null) - return; + if (Inventory == null) + { + Debug.LogError($"Character '{name}' inventory is not initialized. Cannot pickup item."); + return quantity; // 如果背包未初始化,则视为未能添加任何物品 + } + + var remainingQuantity = Inventory.AddItem(itemResource, quantity); + + return remainingQuantity; } - public override void TryAttack() + // public override void TryAttack() + // { + // if (IsAttacking) + // return; + // if (!DefineManager.Instance.defines.TryGetValue(nameof(BulletDef), out var def)) + // return; + // // 修正:First() 可能会在一个空的 Values 集合上抛出异常。 + // // 更好的做法是使用 TryGetValue 或 FirstOrDefault 并检查结果。 + // // 这里假设至少有一个 BulletDef 存在,如果不是,需要更复杂的错误处理。 + // var bulletDefEntry = def.Values.FirstOrDefault(); + // if (bulletDefEntry == null) + // { + // Debug.LogError("No BulletDef found in DefineManager. Cannot attack."); + // return; + // } + // + // var bulletDef = (BulletDef)bulletDefEntry; + // + // Vector3 dir = MousePosition.GetWorldPosition(); + // EntityManage.Instance.GenerateBulletEntity(Program.Instance.FocusedDimensionId, bulletDef, Position, + // dir - Position, this); + // } + + public override WeaponResource GetCurrentWeapon() { - if (IsAttacking) - return; - if (!Managers.DefineManager.Instance.defines.TryGetValue(nameof(BulletDef), out var def)) - return; - var buttonDef = def.Values.First(); - Vector3 dir = Utils.MousePosition.GetWorldPosition(); - Managers.EntityManage.Instance.GenerateBulletEntity((BulletDef)buttonDef, Position, - dir - Position, this); + var currentSelectItem = Inventory.GetSlot(CurrentSelected); + return (WeaponResource)currentSelectItem?.Item; } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Entity.cs b/Client/Assets/Scripts/Entity/Entity.cs index 8af119b..d379824 100644 --- a/Client/Assets/Scripts/Entity/Entity.cs +++ b/Client/Assets/Scripts/Entity/Entity.cs @@ -1,12 +1,14 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Linq; using AI; using Base; using Data; +using Item; +using Managers; using Prefab; using UnityEngine; -using UnityEngine.Serialization; namespace Entity @@ -27,8 +29,10 @@ namespace Entity public ImagePrefab imagePrefab; public ProgressBarPrefab healthBarPrefab; - - + + public EntityPrefab entityPrefab; + public EntityDef entityDef; + /// /// 人工智能行为树,定义实体的行为逻辑。 /// @@ -42,7 +46,7 @@ namespace Entity /// /// 实体的属性定义,包括生命值、攻击力、防御力等。 /// - public AttributesDef attributes = new(); + public Attributes attributes = new(); /// /// 实体当前的移动方向。 @@ -68,9 +72,10 @@ namespace Entity /// 表示实体是否处于追逐状态(影响移动速度)。 /// public bool IsChase { set; get; } = true; - - - + + public string currentDimensionId = null; + + /// /// 表示实体是否由玩家控制。 @@ -83,12 +88,26 @@ namespace Entity { IsChase = true; currentJob = null; + // 逻辑修改:只有当存在一个不同的焦点实体时,才将其PlayerControlled设为false + if (Program.Instance.FocusedEntity && Program.Instance.FocusedEntity != this) + { + Program.Instance.FocusedEntity.PlayerControlled = false; + } + + Program.Instance.SetFocusedEntity(this); + } + // 逻辑修改:确保只有当自身是焦点实体时才取消焦点,避免不必要的逻辑执行 + else if (Program.Instance.FocusedEntity == this) + { + Program.Instance.SetFocusedEntity(null); } - _isPlayerControlled = value; } - get => _isPlayerControlled; + get => Program.Instance.FocusedEntity == this; } + + public bool IsWalking => _walkingTimer > 0; + /// /// 获取实体当前位置。 /// @@ -98,47 +117,57 @@ namespace Entity /// 表示实体是否已经死亡(生命值小于等于零)。 /// public bool IsDead => attributes.health <= 0; - public bool IsShowingOfHitBarUI=>hitBarUIShowTimer > 0; - public bool IsAttacking => attackCoroutine != null; - - - private bool _isPlayerControlled = false; + + public bool IsShowingHealthBarUI => _hitBarUIShowTimer > 0; + public bool IsAttacking => _attackCoroutine != null; + + /// + /// 当实体受到伤害时触发的事件。 + /// 可以订阅此事件来响应实体的生命值变化,例如更新UI或播放受击特效。 + /// + public event Action OnEntityHit; + + /// + /// 当实体死亡时触发的事件。 + /// 只在实体首次进入死亡状态时触发一次。 + /// + public event Action OnEntityDied; + private bool _warning = false; /// /// 存储不同朝向下的动画节点集合。 /// - public Dictionary> bodyAnimationNode = new(); + public Dictionary> bodyAnimationNode = new(); + + private ITick[] _currentAnimatorCache; + + private GameObject wearponAttackAnimationNodeRoot = null; + private ITick[] wearponAttackAnimationNodeList; /// /// 存储不同朝向下的身体节点对象。 /// - private Dictionary bodyNodes = new(); + protected Dictionary> bodyNodes = new(); /// /// 当前实体的朝向。 /// - private Orientation currentOrientation = Orientation.Down; - - - - /// - /// 攻击动画的持续时间(秒)。 - /// - private const float attackAnimationDuration = 0.1f; + private Orientation _currentOrientation = Orientation.Down; /// - /// 抖动的偏移量。 + /// 当前实体的状态 /// - private const float shakeOffset = 0.5f; + private EntityState _currentState = EntityState.Idle; + // 协程引用 - private Coroutine attackCoroutine; - - protected EntityDef entityDef; + private Coroutine _attackCoroutine; - public float hitBarUIShowTime = 5; - private float hitBarUIShowTimer = 0; + + [SerializeField] private float _hitBarUIShowTime = 5; + private float _hitBarUIShowTimer = 0; + private int _walkingTimer = 0; /// @@ -147,12 +176,12 @@ namespace Entity /// 实体的定义数据。 public virtual void Init(EntityDef entityDef) { - attributes = entityDef.attributes.Clone(); + attributes = new Attributes(entityDef.attributes); aiTree = Utils.BehaviorTree.ConvertToAIBase(entityDef.behaviorTree); affiliation = entityDef.affiliation?.defName; InitBody(entityDef.drawingOrder); this.entityDef = entityDef; - + HideHealthBar(); } @@ -162,83 +191,243 @@ namespace Entity /// 绘制顺序定义。 public virtual void InitBody(DrawingOrderDef drawingOrder) { - // 定义方向枚举和对应的 GetDrawingOrder 调用 - Orientation[] orientations = { Orientation.Down, Orientation.Up, Orientation.Left, Orientation.Right }; - - foreach (var orientation in orientations) + // 预缓存枚举值(避免每次循环重复调用 Enum.GetValues) + var states = Enum.GetValues(typeof(EntityState)).Cast().ToArray(); + var orientations = Enum.GetValues(typeof(Orientation)).Cast().ToArray(); + // 预初始化字典结构(减少内层循环的字典检查) + foreach (var state in states) { - currentOrientation = orientation; - bodyAnimationNode[orientation] = new(); - // 获取当前方向的绘图节点 - var drawNode = drawingOrder.GetDrawingOrder(orientation, out var realOrientation); - - if (drawNode == null) continue; - var directionRoot = new GameObject(orientation.ToString()); - directionRoot.transform.SetParent(body.transform, false); - InitBodyPart(drawNode, directionRoot, drawingOrder.texturePath,realOrientation); - bodyNodes[orientation] = directionRoot; + bodyNodes.TryAdd(state, new Dictionary()); + bodyAnimationNode.TryAdd(state, new Dictionary()); } - currentOrientation = Orientation.Down; - foreach (var bodyNode in bodyNodes) + // 主初始化逻辑 + foreach (var state in states) { - bodyNode.Value.SetActive(false); + var stateBodyNodes = bodyNodes[state]; + var stateAnimNodes = bodyAnimationNode[state]; + foreach (var orientation in orientations) + { + // 获取节点定义(避免重复调用) + var nodeDef = drawingOrder.GetDrawNodeDef(state, orientation, out var original); + GameObject targetObj = null; + // --- 修改点一:处理空节点定义(增加默认精灵显示) --- + if (nodeDef == null) + { + if (imagePrefab != null && Managers.PackagesImageManager.Instance.defaultSprite != null) + { + // 实例化imagePrefab作为默认占位符 + targetObj = Instantiate(imagePrefab.gameObject, body.transform); + targetObj.name = $"{state}_{orientation}_Default"; + targetObj.transform.localPosition=Vector3.zero; + var imagePrefabCom = targetObj.GetComponent(); + if (imagePrefabCom != null) + { + imagePrefabCom.SetSprite(Managers.PackagesImageManager.Instance.defaultSprite); + } + else + { + Debug.LogWarning( + $"InitBody: 默认ImagePrefab中无法获取ImagePrefab组件!状态: {state}, 朝向: {orientation}"); + // 降级为普通GameObject + targetObj = new GameObject { name = $"{state}_{orientation}_Empty" }; + targetObj.transform.SetParent(body.transform, false); + } + } + else + { + // 如果没有imagePrefab或defaultSprite,则创建空GameObject + targetObj = new GameObject { name = $"{state}_{orientation}_Empty" }; + targetObj.transform.SetParent(body.transform, false); + } + } + else + { + // 处理有效节点定义 + if (original.HasValue && stateBodyNodes.TryGetValue(original.Value, out var reusedObj)) + { + targetObj = reusedObj; // 复用已有对象 + } + else + { + targetObj = InitBodyPart(nodeDef, body); // 创建新对象 + } + } + + if (targetObj != null) + { + stateBodyNodes[orientation] = targetObj; + // 逻辑说明:确保 stateAnimNodes[orientation] 总是被初始化为一个列表 + var animatorsForOrientation = new List(); // 总是创建一个新的列表 + var animators = targetObj.GetComponentsInChildren(); + if (animators.Length > 0) + { + animatorsForOrientation.AddRange(animators); + } + + stateAnimNodes[orientation] = animatorsForOrientation.ToArray(); + } + else + { + Debug.LogError($"InitBody: 无法为状态 {state}, 朝向 {orientation} 创建或找到有效的GameObject。"); + stateBodyNodes[orientation] = new GameObject($"ErrorNode_{state}_{orientation}"); // 提供一个错误占位符 + stateBodyNodes[orientation].transform.SetParent(body.transform, false); + stateAnimNodes[orientation] = Array.Empty(); + } + } } - SetOrientation(Orientation.Down); + + // 批量隐藏所有节点(使用字典值集合直接操作) + foreach (var nodeDict in bodyNodes.Values) + { + foreach (var obj in nodeDict.Values) + { + obj.SetActive(false); + } + } + + SetBodyTexture(EntityState.Idle, Orientation.Down); // 激活默认朝向 } /// - /// 递归初始化单个绘图节点及其子节点。 + /// 递归初始化单个绘图节点及其子节点,具有更强的健壮性和错误处理。 /// /// 绘图节点定义。 /// 父节点对象。 - /// 纹理资源路径。 - public virtual void InitBodyPart(DrawNodeDef drawNode, GameObject parent, string folderPath,Orientation realOrientation) + /// 创建的GameObject,如果失败则返回null + public virtual GameObject InitBodyPart(DrawNodeDef drawNode, GameObject parent) { - if (drawNode == null) return; - - GameObject nodeObject; - if (drawNode.nodeName == "noName") + try { - nodeObject = new(); - nodeObject.transform.SetParent(parent.transform); - } - else - { - switch (drawNode.drawNodeType) + // 参数验证 + if (drawNode == null) { - case DrawNodeType.Image: + Debug.LogWarning("InitBodyPart: drawNode参数为null"); + return null; + } + + if (parent == null) + { + Debug.LogWarning($"InitBodyPart: 父节点为null (节点名: {drawNode.nodeName})"); + return null; + } + + GameObject nodeObject = null; + // 根据纹理数量创建不同类型的节点 + switch (drawNode.textures?.Count ?? 0) + { + case 0: + // 无纹理节点 + nodeObject = new GameObject(drawNode.nodeName); + nodeObject.transform.SetParent(parent.transform, false); + break; + case 1: + // 单纹理节点 + if (imagePrefab == null) + { + Debug.LogError($"InitBodyPart: imagePrefab未设置 (节点名: {drawNode.nodeName})"); + return null; + } + nodeObject = Instantiate(imagePrefab.gameObject, parent.transform); var texture = - Managers.PackagesImageManager.Instance.FindBodyTextures(drawNode.packID, folderPath, - $"{drawNode.nodeName}_{realOrientation}"); - var image = nodeObject.GetComponent(); - image.SetSprite(texture.Length > 0 - ? texture[0] - : Managers.PackagesImageManager.Instance.defaultSprite); - break; + Managers.PackagesImageManager.Instance.GetSprite(drawNode.packID, + drawNode.textures[0]); // --- 修改点二:移除 ?. --- + if (!texture) + { + Debug.LogWarning( + $"InitBodyPart: 无法获取纹理 (节点名: {drawNode.nodeName}, 纹理ID: {drawNode.textures[0]})"); + } + + var imagePrefabCom = nodeObject.GetComponent(); + if (imagePrefabCom != null) + { + imagePrefabCom.SetSprite(texture); + } + else + { + Debug.LogWarning($"InitBodyPart: 无法获取ImagePrefab组件 (节点名: {drawNode.nodeName})"); + } - case DrawNodeType.Animation: - nodeObject = Instantiate(animatorPrefab.gameObject, parent.transform); - ITick tick = nodeObject.GetComponent(); - if (tick != null) - bodyAnimationNode[currentOrientation].Add(tick); - var textures = Managers.PackagesImageManager.Instance.FindBodyTextures(drawNode.packID, - folderPath, - $"{drawNode.nodeName}_{realOrientation}"); - var animator = nodeObject.GetComponent(); - animator.SetSprites(textures); break; default: - throw new ArgumentOutOfRangeException(); + // 多纹理动画节点 + if (!animatorPrefab) + { + Debug.LogError($"InitBodyPart: animatorPrefab未设置 (节点名: {drawNode.nodeName})"); + return null; + } + + nodeObject = Instantiate(animatorPrefab.gameObject, parent.transform); + var animator = nodeObject.GetComponent(); + if (animator == null) + { + Debug.LogWarning($"InitBodyPart: 无法获取SpriteAnimator组件 (节点名: {drawNode.nodeName})"); + break; + } + + animator.SetFPS(drawNode.FPS); + var animatedSprites = new List(); + foreach (var textureId in drawNode.textures) + { + try + { + var sprite = + Managers.PackagesImageManager.Instance.GetSprite(drawNode.packID, + textureId); // --- 修改点二:移除 ?. --- + if (sprite != null) + { + animatedSprites.Add(sprite); + } + else + { + Debug.LogWarning( + $"InitBodyPart: 无法获取动画纹理 (节点名: {drawNode.nodeName}, 纹理ID: {textureId})"); + } + } + catch (Exception ex) + { + Debug.LogError( + $"InitBodyPart: 加载动画纹理时出错 (节点名: {drawNode.nodeName}, 纹理ID: {textureId}): {ex.Message}"); + } + } + + if (animatedSprites.Count > 0) + { + animator.SetSprites(animatedSprites.ToArray()); + } + else + { + Debug.LogWarning($"InitBodyPart: 没有有效的动画纹理 (节点名: {drawNode.nodeName})"); + } + + break; } + + // 设置节点属性 + if (!nodeObject) return nodeObject; + nodeObject.transform.localPosition = drawNode.position; + nodeObject.name = drawNode.nodeName ?? "UnnamedNode"; + // 递归初始化子节点 + if (drawNode.nodes == null) return nodeObject; + foreach (var child in drawNode.nodes) + { + try + { + InitBodyPart(child, nodeObject); + } + catch (Exception ex) + { + Debug.LogError($"InitBodyPart: 初始化子节点失败 (父节点: {drawNode.nodeName}): {ex.Message}"); + } + } + + return nodeObject; } - nodeObject.transform.localPosition = drawNode.position; - nodeObject.name = drawNode.nodeName; - // 递归初始化子节点 - foreach (var child in drawNode.children) + catch (Exception ex) { - InitBodyPart(child, nodeObject, folderPath,realOrientation); + Debug.LogError($"InitBodyPart: 初始化节点时发生未处理的异常 (节点名: {drawNode?.nodeName}): {ex}"); + return null; } } @@ -247,7 +436,16 @@ namespace Entity /// public void Tick() { - if (_isPlayerControlled) + if (_walkingTimer > 0) + { + _walkingTimer -= 1; + if (_walkingTimer <= 0) + { + SetBodyTexture(EntityState.Idle, _currentOrientation); + } + } + + if (PlayerControlled) { UpdatePlayerControls(); } @@ -255,18 +453,27 @@ namespace Entity { AutoBehave(); } - if (bodyAnimationNode.TryGetValue(currentOrientation, out var ticks)) + + if (_currentAnimatorCache != null) { - foreach (var tick in ticks) + foreach (var animator in _currentAnimatorCache) + { + animator.Tick(); + } + } + + if (wearponAttackAnimationNodeList != null) + { + foreach (var tick in wearponAttackAnimationNodeList) { tick.Tick(); } } - if (IsShowingOfHitBarUI) + if (IsShowingHealthBarUI) { - hitBarUIShowTimer -= Time.deltaTime; - if (hitBarUIShowTimer <= 0) + _hitBarUIShowTimer -= Time.deltaTime; + if (_hitBarUIShowTimer <= 0) { HideHealthBar(); } @@ -276,29 +483,56 @@ namespace Entity /// /// 尝试攻击目标实体。 /// - public virtual void TryAttack() + public virtual void TryAttack() // 使用override允许子类重写 { - if(!IsAttacking) - attackCoroutine = StartCoroutine(AttackFlow()); + if (IsAttacking || IsDead) return; // 死亡时无法攻击 + + // 尝试获取当前武器 + WeaponResource currentWeapon = GetCurrentWeapon(); + + // 如果没有武器,可以选择进行徒手攻击或者直接返回 + // 暂时设定为:如果没有武器,则不进行攻击 + if (currentWeapon == null) + { + // 可以在这里添加一个默认的徒手攻击逻辑,或者播放一个“不能攻击”的提示 + Debug.Log($"{name} 没有装备武器,无法攻击。"); + return; + } + + // 启动基于武器的攻击协程 + _attackCoroutine = StartCoroutine(AttackFlow(currentWeapon)); } - /// - /// 设置实体的朝向。 - /// - /// 新的朝向。 - public virtual void SetOrientation(Orientation orientation) + + public virtual void SetBodyTexture(EntityState state, Orientation orientation) { - // 禁用当前朝向的节点 - if (bodyNodes.TryGetValue(currentOrientation, out var currentNode)) + if (bodyNodes.TryGetValue(_currentState, out var stateNode)) { - currentNode.SetActive(false); + if (stateNode.TryGetValue(_currentOrientation, out var node)) + { + node.SetActive(false); + } } - // 设置新的朝向 - currentOrientation = orientation; - // 激活新朝向的节点 - if (bodyNodes.TryGetValue(orientation, out var newNode)) + + if (bodyNodes.TryGetValue(state, out var showStateNode)) { - newNode.SetActive(true); + if (showStateNode.TryGetValue(orientation, out var showNode)) + { + showNode.SetActive(true); + } + } + + _currentState = state; + _currentOrientation = orientation; + + if (bodyAnimationNode.TryGetValue(_currentState, out var animationNode) && + animationNode.TryGetValue(_currentOrientation, out var value)) + { + _currentAnimatorCache = value; + } + else + { + _currentAnimatorCache = new ITick[] { }; // 如果没有找到动画,则使用空列表 } } @@ -310,6 +544,8 @@ namespace Entity if (IsAttacking) return; transform.position += direction * (attributes.moveSpeed * Time.deltaTime * (IsChase ? 1 : 0.5f)); + SetBodyTexture(EntityState.Walking, _currentOrientation); + _walkingTimer = 2; } /// @@ -318,26 +554,46 @@ namespace Entity /// 攻击来源实体。 public virtual void OnHit(Entity from) { + // MODIFIED: 收到攻击时触发回调 + if (IsDead) // 如果已经死亡,则不再处理伤害 nor 触发事件 + { + return; + } + var hit = from.attributes.attack - attributes.defense; if (hit < 0) hit = from.attributes.attack / 100; + // 确保伤害不为负,最小为0 + hit = Mathf.Max(0, hit); attributes.health -= hit; + var wasFatal = IsDead; // 检查这次攻击是否导致实体死亡 + // 触发 OnEntityHit 事件 + OnEntityHit?.Invoke(new EntityHitEventArgs( + this, from, hit, attributes.health, entityDef.attributes.health, wasFatal)); currentJob?.StopJob(); - ShowHealthBar(); + if (wasFatal) + { + // 如果是首次死亡,则触发 OnEntityDied 事件 + // MODIFIED: 停止所有活动,包括当前工作 + currentJob = null; // 清除当前工作 + OnEntityDied?.Invoke(this); + } + + ShowHealthBar(); // 无论是否死亡,都更新血条UI } public void ShowHealthBar() { - if(!healthBarPrefab) + if (!healthBarPrefab) return; healthBarPrefab.gameObject.SetActive(true); healthBarPrefab.Progress = (float)attributes.health / entityDef.attributes.health; - hitBarUIShowTimer=hitBarUIShowTime; + _hitBarUIShowTimer = _hitBarUIShowTime; } public void HideHealthBar() { - if(!healthBarPrefab) + if (!healthBarPrefab) return; healthBarPrefab.gameObject.SetActive(false); } @@ -347,7 +603,18 @@ namespace Entity /// public virtual void Kill() { - attributes.health = 0; + if (IsDead) + { + return; + } + + attributes.health = 0; // 直接设置生命值为0 + // MODIFIED: 停止所有活动,包括当前工作 + currentJob?.StopJob(); + currentJob = null; // 清除当前工作 + // 触发 OnEntityDied 事件 + OnEntityDied?.Invoke(this); + ShowHealthBar(); } /// @@ -369,7 +636,8 @@ namespace Entity // 水平方向优先 ori = direction.x > 0 ? Orientation.Right : Orientation.Left; } - SetOrientation(ori); + + SetBodyTexture(_currentState, ori); } /// @@ -389,14 +657,16 @@ namespace Entity Debug.LogWarning($"{GetType().Name}类型的{name}没有分配到任何工作,给行为树末尾添加等待行为,避免由于没有工作导致无意义的反复查找工作导致性能问题"); _warning = true; } + return; } + currentJob.StartJob(this); } currentJob.Update(); } - + /// /// 更新玩家控制的逻辑,处理输入和移动。 @@ -406,7 +676,7 @@ namespace Entity // 检测 Shift 键状态 var isHoldingShift = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift); IsChase = !isHoldingShift; // 按住 Shift 时 IsChase = false,否则 true - // 获取当前键盘输入状态(2D 移动,只使用 X 和 Y 轴) + // 获取当前键盘输入状态(2D 移动,只使用 X 和 Y 轴) var inputDirection = Vector2.zero; // 检测 WASD 或方向键输入 @@ -414,22 +684,27 @@ namespace Entity { inputDirection += Vector2.up; // 向上移动(Y 轴正方向) } + if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) { inputDirection += Vector2.down; // 向下移动(Y 轴负方向) } + if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) { inputDirection += Vector2.left; // 向左移动(X 轴负方向) } + if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) { inputDirection += Vector2.right; // 向右移动(X 轴正方向) } - if (Input.GetMouseButtonDown(0)) + + if (Input.GetMouseButton(0)) { TryAttack(); } + // 如果有输入方向,则设置目标位置并尝试移动 if (inputDirection == Vector2.zero) return; // 归一化方向向量,确保对角线移动速度一致 @@ -446,66 +721,169 @@ namespace Entity } - // 攻击流程协程 - IEnumerator AttackFlow() - { - // 播放攻击动画并获取动画持续时间 - var animationDuration = PlayAttackAnimation(); - // 等待动画执行完毕 - yield return new WaitForSeconds(animationDuration); - // 调用检测并攻击敌人的方法 - DetectAndAttackEnemies(); - // 攻击流程结束,清理协程引用 - attackCoroutine = null; - } - - - /// - /// 播放攻击动画。 - /// - /// 开始检测攻击范围内敌人的时间。 - public float PlayAttackAnimation() - { - // 启动协程来执行攻击动画 - StartCoroutine(ShakeInDirectionCoroutine()); - - // 返回检测敌人的起始时间 - return attackAnimationDuration; - } - - private IEnumerator ShakeInDirectionCoroutine() + // NEW: ShakeInDirectionCoroutine 签名修改以接收持续时间 + private IEnumerator ShakeInDirectionCoroutine(float duration) { var originalPosition = transform.position; // 记录原始位置 - transform.position += direction * shakeOffset; - yield return new WaitForSeconds(attackAnimationDuration); + // 在攻击动画持续时间内进行抖动效果 + transform.position += direction * 0.5f; + yield return new WaitForSeconds(duration); transform.position = originalPosition; } - public void DetectAndAttackEnemies() + // NEW: AttackFlow 现在接收 WeaponResource 参数 + protected IEnumerator AttackFlow(WeaponResource weapon) // 将可见性改为 protected,允许子类访问 { - var attackCount = attributes.attackTargetCount; - // 获取攻击范围内的所有碰撞体 + // STEP 1: 激活武器动画节点 + if (weapon.AttackAnimationDef != null) + { + var animation = weapon.InstantiateAttackAnimation(body.transform); + wearponAttackAnimationNodeRoot = animation.root; + wearponAttackAnimationNodeList = animation.animationComponents; + } + + // STEP 4: 等待到攻击判定时间 + float elapsedTime = 0f; + while (elapsedTime < weapon.AttackDetectionTime) + { + if (IsDead) + { + /* 如果实体在此期间死亡,立刻中断 */ + break; + } + + elapsedTime += Time.deltaTime; + yield return null; // 等待一帧 + } + + // 如果实体在等待期间死亡,清理并退出 + if (IsDead) + { + CleanupAttack(weapon); + yield break; + } + + ExecuteWeaponAction(weapon); + + float remainingAnimationTime = weapon.AttackAnimationTime - elapsedTime; + if (remainingAnimationTime > 0) + { + yield return new WaitForSeconds(remainingAnimationTime); + } + else if (weapon.AttackAnimationTime > 0) + { + yield return new WaitForSeconds(weapon.AttackAnimationTime - elapsedTime); + } + + // STEP 7: 清理攻击状态 + CleanupAttack(weapon); + } + + private void CleanupAttack(WeaponResource weapon) + { + if (wearponAttackAnimationNodeRoot) + { + Destroy(wearponAttackAnimationNodeRoot); + wearponAttackAnimationNodeRoot = null; + } + + wearponAttackAnimationNodeList = null; + _attackCoroutine = null; + } + + protected virtual void ExecuteWeaponAction(WeaponResource weapon) // 将可见性改为 protected,允许子类重写 + { + if (weapon == null) return; // 安全检查 + + switch (weapon.Type) + { + case WeaponType.Melee: + ExecuteMeleeAttack(weapon); + break; + case WeaponType.Ranged: + ExecuteRangedAttack(weapon); + break; + default: + Debug.LogWarning($"未知武器类型: {weapon.Type} for {name}"); + break; + } + } + + private void ExecuteMeleeAttack(WeaponResource weapon) + { + if (weapon.Attributes == null) + { + Debug.LogWarning($"武器 {weapon.DefName} 没有定义Attributes,无法执行近战攻击。"); + return; + } + + var attackRange = weapon.Attributes.attackRange; + var attackTargetCount = weapon.Attributes.attackTargetCount; + var hits = Physics2D.OverlapCircleAll( - transform.position, - attributes.attackRange, + transform.position, + attackRange, LayerMask.GetMask("Entity")); foreach (var hit in hits) { - if (attackCount <= 0) break; + if (attackTargetCount <= 0) break; // 已达到最大攻击目标数 + if (hit.gameObject == gameObject) continue; // 不攻击自己 - // 检查是否是自身(额外安全措施) - if (hit.gameObject == this.gameObject) continue; - - // 获取Entity组件 var entity = hit.GetComponent(); - if (!entity) continue; - - // 执行攻击 - entity.OnHit(this); - attackCount--; + if (entity != null && entity.affiliation != affiliation) // 确保是敌对实体 + { + entity.OnHit(this); // 攻击时将自身作为攻击来源 + attackTargetCount--; + } } } + + // NEW: 辅助方法用于执行远程攻击 + private void ExecuteRangedAttack(WeaponResource weapon) + { + if (weapon.Bullet == null) + { + Debug.LogWarning($"远程武器 {weapon.DefName} 没有定义Bullet,无法发射子弹。"); + return; + } + + // 获取子弹方向。这里使用实体当前的移动方向作为子弹发射方向 + // 更复杂的逻辑可能根据鼠标位置、目标位置等确定 + Vector3 bulletDirection = direction; // 实体当前的朝向 + if (PlayerControlled && Input.GetMouseButton(0)) // 玩家控制时,如果鼠标按下,尝试朝鼠标方向发射 + { + Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); + mouseWorldPos.z = transform.position.z; // 保持Z轴一致 + bulletDirection = (mouseWorldPos - transform.position).normalized; + } + + // 如果没有明确的方向,给一个默认值以防万一 + if (bulletDirection == Vector3.zero) bulletDirection = Vector3.down; + + + // 假设 EntityManage.Instance.GenerateBulletEntity 方法存在 + // (需要一个 EntityManage 单例来实现子弹生成) + if (EntityManage.Instance != null && Program.Instance != null) + { + EntityManage.Instance.GenerateBulletEntity( + Program.Instance.FocusedDimensionId, + weapon.Bullet, + transform.position, // 子弹的生成位置 + bulletDirection, // 子弹的初始方向 + this); // 子弹的发射者 + } + else + { + Debug.LogError("EntityManage.Instance 或 Program.Instance 为空,无法生成子弹。请确保它们已正确初始化。"); + } + } + + + public virtual WeaponResource GetCurrentWeapon() + { + return null; + } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/EntityHitEventArgs.cs b/Client/Assets/Scripts/Entity/EntityHitEventArgs.cs new file mode 100644 index 0000000..561dea2 --- /dev/null +++ b/Client/Assets/Scripts/Entity/EntityHitEventArgs.cs @@ -0,0 +1,25 @@ +using System; + +namespace Entity +{ + public class EntityHitEventArgs : EventArgs + { + public Entity AttackedEntity { get; } // 被攻击的实体 + public Entity AttackerEntity { get; } // 攻击者 + public int DamageDealt { get; } // 这次攻击造成的实际伤害 + public float CurrentHealth { get; } // 攻击后的当前生命值 + public float MaxHealth { get; } // 最大生命值 + public bool WasFatal { get; } // 这次攻击是否致命(导致死亡) + + public EntityHitEventArgs(Entity attacked, Entity attacker, int damage, float currentHealth, float maxHealth, bool wasFatal) + { + AttackedEntity = attacked; + AttackerEntity = attacker; + DamageDealt = damage; + CurrentHealth = currentHealth; + MaxHealth = maxHealth; + WasFatal = wasFatal; + } + } + +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/EntityHitEventArgs.cs.meta b/Client/Assets/Scripts/Entity/EntityHitEventArgs.cs.meta new file mode 100644 index 0000000..02a8d28 --- /dev/null +++ b/Client/Assets/Scripts/Entity/EntityHitEventArgs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5d160d50370b46b299421e6c05a83beb +timeCreated: 1756199871 \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Inventory.cs b/Client/Assets/Scripts/Entity/Inventory.cs index 5e98860..68ad7bd 100644 --- a/Client/Assets/Scripts/Entity/Inventory.cs +++ b/Client/Assets/Scripts/Entity/Inventory.cs @@ -1,70 +1,169 @@ using System.Collections.Generic; +using System.Linq; using Item; +using UnityEngine; namespace Entity { public class Inventory { - public Entity from; // 物品所属实体 - public List items = new List(); // 背包中的物品列表 + public Entity From { get; private set; } + private readonly List _slots; + public int Capacity { get; private set; } - /// - /// 添加物品到背包 - /// - /// 要添加的物品 - /// 添加的数量 - public void AddItem(ItemResource resource, int count) + public event System.Action OnItemAdded; + public event System.Action OnItemRemoved; + public event System.Action OnInventoryChanged; + + public Inventory(Entity owner, int capacity = 20) { - if (count <= 0) return; // 如果数量小于等于0,直接返回 + From = owner; + Capacity = Mathf.Max(1, capacity); + _slots = new List(Capacity); + } - // 检查背包中是否已存在相同物品 - foreach (var item in items) + public int AddItem(Item.ItemResource itemResource, int quantity) + { + if (itemResource == null || quantity <= 0) { - if (item.resource.Equals(resource)) + Debug.LogWarning( + $"Inventory for {From?.ToString() ?? "Unknown"}: Attempted to add null item or zero/negative quantity."); + return quantity; + } + + var remainingQuantity = quantity; + var addedTotal = 0; + + // 1. 尝试堆叠到现有槽位 (使用 DefName 进行比较) + if (itemResource.MaxStack > 1) + { + foreach (var slot in _slots.Where(s => + s.Item != null && s.Item.DefName == itemResource.DefName && !s.IsFull)) { - item.count += count; // 增加数量 - return; + var addedToSlot = slot.AddQuantity(remainingQuantity); + remainingQuantity -= addedToSlot; + addedTotal += addedToSlot; + if (remainingQuantity <= 0) break; } } - // 如果没有找到相同物品,则创建新物品并添加到背包 - var newItem = new ItemBase { resource = resource, count = count }; - items.Add(newItem); + // 2. 如果还有剩余,尝试添加到新槽位 + while (remainingQuantity > 0 && _slots.Count < Capacity) + { + var quantityToAdd = Mathf.Min(remainingQuantity, itemResource.MaxStack); + var newSlot = new InventorySlot(itemResource, quantityToAdd); + _slots.Add(newSlot); + remainingQuantity -= quantityToAdd; + addedTotal += quantityToAdd; + } + + if (addedTotal > 0) + { + OnItemAdded?.Invoke(itemResource, addedTotal); + OnInventoryChanged?.Invoke(); + } + + if (remainingQuantity > 0) + { + Debug.LogWarning( + $"Inventory for {From?.ToString() ?? "Unknown"} is full or cannot stack. {remainingQuantity} of {itemResource.Name} (DefName: {itemResource.DefName}) could not be added."); + } + + return remainingQuantity; } - /// - /// 从背包中取出物品 - /// - /// 物品名称 - /// 取出的数量 - /// 是否成功取出 - public bool RemoveItem(string itemName, int count) + public int RemoveItem(Item.ItemResource itemResource, int quantity) { - if (count <= 0) return false; // 如果数量小于等于0,直接返回失败 - - foreach (var item in items) + if (itemResource == null || quantity <= 0) { - if (item.resource.name == itemName) - { - if (item.count >= count) - { - item.count -= count; // 减少数量 - if (item.count == 0) - { - items.Remove(item); // 如果数量为0,则移除该物品 - } + Debug.LogWarning( + $"Inventory for {From?.ToString() ?? "Unknown"}: Attempted to remove null item or zero/negative quantity."); + return quantity; + } - return true; // 成功取出 - } - else + var remainingQuantity = quantity; + var removedTotal = 0; + var slotsToClean = new List(); + + // 从后往前遍历,以便安全地移除空槽位 (使用 DefName 进行比较) + for (var i = _slots.Count - 1; i >= 0; i--) + { + var slot = _slots[i]; + if (slot.Item != null && slot.Item.DefName == itemResource.DefName) + { + var removedFromSlot = slot.RemoveQuantity(remainingQuantity); + remainingQuantity -= removedFromSlot; + removedTotal += removedFromSlot; + + if (slot.IsEmpty) { - return false; // 数量不足 + slotsToClean.Add(slot); } + + if (remainingQuantity <= 0) break; } } - return false; // 未找到物品 - } - + foreach (var slot in slotsToClean) + { + _slots.Remove(slot); + } + + if (removedTotal > 0) + { + OnItemRemoved?.Invoke(itemResource, removedTotal); + OnInventoryChanged?.Invoke(); + } + + if (remainingQuantity > 0) + { + Debug.LogWarning( + $"Inventory for {From?.ToString() ?? "Unknown"}: Not enough {itemResource.Name} (DefName: {itemResource.DefName}). {remainingQuantity} could not be removed."); + } + + return remainingQuantity; + } + + public bool HasItem(Item.ItemResource itemResource, int quantity = 1) + { + if (itemResource == null || quantity <= 0) return false; + return GetItemCount(itemResource) >= quantity; + } + + public int GetItemCount(Item.ItemResource itemResource) + { + if (itemResource == null) return 0; + // 使用 DefName 进行计数 + return _slots.Where(s => s.Item != null && s.Item.DefName == itemResource.DefName) + .Sum(s => s.Quantity); + } + + public IReadOnlyList GetSlots() + { + return _slots.AsReadOnly(); + } + public InventorySlot GetSlot(Item.ItemResource itemResource) + { + if (itemResource == null) return null; + + foreach (var slot in _slots) + { + if (slot.Item != null && slot.Item.DefName == itemResource.DefName) + { + return slot; + } + } + + return null; + } + public InventorySlot GetSlot(int i) + { + if (i < 0 || i >= OccupiedSlotsCount) + return null; + return _slots[i]; + } + + public int OccupiedSlotsCount => _slots.Count; + public int AvailableSlotsCount => Capacity - _slots.Count; } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/InventorySlot.cs b/Client/Assets/Scripts/Entity/InventorySlot.cs new file mode 100644 index 0000000..6188c74 --- /dev/null +++ b/Client/Assets/Scripts/Entity/InventorySlot.cs @@ -0,0 +1,78 @@ +using UnityEngine; + +namespace Entity +{ + /// + /// 表示背包中的一个槽位,存储特定类型的物品及其数量。 + /// + public class InventorySlot + { + public Item.ItemResource Item { get; private set; } // 槽位中的物品资源 + public int Quantity { get; private set; } // 槽位中物品的数量 + + /// + /// 创建一个新的背包槽位。 + /// + /// 槽位中的物品资源。 + /// 初始数量。 + public InventorySlot(Item.ItemResource item, int quantity) + { + if (item == null) + { + Debug.LogError("InventorySlot cannot be initialized with a null ItemResource."); + return; + } + + Item = item; + Quantity = Mathf.Max(0, quantity); // 确保数量不为负 + // 确保初始数量不超过最大堆叠 + if (Quantity > Item.MaxStack) + { + Debug.LogWarning( + $"Initial quantity {Quantity} for {Item.Name} exceeds MaxStack {Item.MaxStack}. Clamping to MaxStack."); + Quantity = Item.MaxStack; + } + } + + /// + /// 向槽位中添加指定数量的物品。 + /// + /// 要添加的数量。 + /// 实际添加的数量。 + public int AddQuantity(int amount) + { + if (Item == null || amount <= 0) return 0; + + var spaceLeft = Item.MaxStack - Quantity; + if (spaceLeft <= 0) return 0; // 槽位已满 + + var added = Mathf.Min(amount, spaceLeft); + Quantity += added; + return added; + } + + /// + /// 从槽位中移除指定数量的物品。 + /// + /// 要移除的数量。 + /// 实际移除的数量。 + public int RemoveQuantity(int amount) + { + if (Item == null || amount <= 0) return 0; + + var removed = Mathf.Min(amount, Quantity); + Quantity -= removed; + return removed; + } + + /// + /// 获取槽位是否为空。 + /// + public bool IsEmpty => Quantity <= 0; + + /// + /// 获取槽位是否已满。 + /// + public bool IsFull => Item != null && Quantity >= Item.MaxStack; + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/InventorySlot.cs.meta b/Client/Assets/Scripts/Entity/InventorySlot.cs.meta new file mode 100644 index 0000000..74ab2f9 --- /dev/null +++ b/Client/Assets/Scripts/Entity/InventorySlot.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4c58fcd7fb7147ce82fe20e68cb7c8d4 +timeCreated: 1756031108 \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Monster.cs b/Client/Assets/Scripts/Entity/Monster.cs index dc9a67b..fab9c0f 100644 --- a/Client/Assets/Scripts/Entity/Monster.cs +++ b/Client/Assets/Scripts/Entity/Monster.cs @@ -1,9 +1,26 @@ +using Data; +using Item; +using Managers; + namespace Entity { public class Monster:Entity { - + private WeaponResource weapon; + public override void Init(EntityDef entityDef) + { + base.Init(entityDef); + var monsterDef = entityDef as MonsterDef; + if (monsterDef != null) + { + weapon = (WeaponResource)ItemResourceManager.Instance.GetItem(monsterDef.weapon.defName); + } + } + public override WeaponResource GetCurrentWeapon() + { + return weapon; + } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Outline.cs b/Client/Assets/Scripts/Entity/Outline.cs index 354512b..0eb5014 100644 --- a/Client/Assets/Scripts/Entity/Outline.cs +++ b/Client/Assets/Scripts/Entity/Outline.cs @@ -16,8 +16,6 @@ namespace Entity public ProgressBarPrefab progressBarPrefab; public Entity entity; - - private bool _select = false; public static Vector3 minimum=new(0.5f,0.5f,0.5f); @@ -110,14 +108,6 @@ namespace Entity result.Add(("结束操控", EndControl)); else result.Add(("手动操控", StartControl)); - if (CameraControl.CameraControl.Instance.focusedEntity == entity) - { - result.Add(("取消跟随", ()=>CameraControl.CameraControl.Instance.focusedEntity=null)); - } - else - { - result.Add(("视角跟随", ()=>CameraControl.CameraControl.Instance.focusedEntity=entity)); - } result.Add(("杀死", () => entity.Kill())); result.Add(("变成笨蛋", BecomeDefault)); return result; @@ -126,19 +116,17 @@ namespace Entity private void BecomeDefault() { entity.Kill(); - Managers.EntityManage.Instance.GenerateDefaultEntity(entity.Position); + EntityManage.Instance.GenerateDefaultEntity(Program.Instance.FocusedDimensionId,entity.Position); } private void StartControl() { entity.PlayerControlled = true; - CameraControl.CameraControl.Instance.focusedEntity=entity; } private void EndControl() { entity.PlayerControlled = false; - CameraControl.CameraControl.Instance.focusedEntity=null; } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Pickup.cs b/Client/Assets/Scripts/Entity/Pickup.cs new file mode 100644 index 0000000..11f52c2 --- /dev/null +++ b/Client/Assets/Scripts/Entity/Pickup.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Base; +using Data; +using Item; +using Prefab; +using UnityEngine; + +namespace Entity +{ + public class Pickup:Entity + { + public ItemResource itemResource; + protected override void AutoBehave() + { + } + + public override void SetTarget(Vector3 pos) + { + + } + + public void Init(ItemDef itemDef) + { + itemResource = Managers.ItemResourceManager.Instance.GetItem(itemDef.defName); + // 预缓存枚举值(避免每次循环重复调用 Enum.GetValues) + var states = Enum.GetValues(typeof(EntityState)).Cast().ToArray(); + // 预初始化字典结构(减少内层循环的字典检查) + foreach (var state in states) + { + bodyNodes.TryAdd(state, new Dictionary()); + bodyAnimationNode.TryAdd(state, new Dictionary()); + } + + var texture = itemResource.Icon; + if (texture.Count == 1) + { + var imageObj = Instantiate(imagePrefab.gameObject, body.transform); + imageObj.transform.localPosition = Vector3.zero; + bodyNodes[EntityState.Idle][Orientation.Down] = imageObj; + var image = imageObj.GetComponent(); + image.SetSprite(texture[0]); + } + else if (texture.Count > 1) + { + var animatorObj = Instantiate(animatorPrefab.gameObject, body.transform); + animatorObj.transform.localPosition = Vector3.zero; + bodyNodes[EntityState.Idle][Orientation.Down] = animatorObj; + var animator = animatorObj.GetComponent(); + animator.SetSprites(texture.ToArray()); + ITick[] ticks = { animator }; + + bodyAnimationNode[EntityState.Idle][Orientation.Down] = ticks; + } + + SetBodyTexture(EntityState.Idle, Orientation.Down); + } + + private void OnTriggerEnter2D(Collider2D other) + { + var entity = other.GetComponent(); + if (entity == null) return; + if (entity.TryPickupItem(itemResource, 1) <= 0) + { + Kill(); + } + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Pickup.cs.meta b/Client/Assets/Scripts/Entity/Pickup.cs.meta new file mode 100644 index 0000000..f72642a --- /dev/null +++ b/Client/Assets/Scripts/Entity/Pickup.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4e65cb3d0f8440c599399cefd9a3a5d7 +timeCreated: 1756191938 \ No newline at end of file diff --git a/Client/Assets/Scripts/Item/ItemResource.cs b/Client/Assets/Scripts/Item/ItemResource.cs index 996fb8e..f2fbe07 100644 --- a/Client/Assets/Scripts/Item/ItemResource.cs +++ b/Client/Assets/Scripts/Item/ItemResource.cs @@ -1,12 +1,118 @@ +using System; +using System.Collections.Generic; +using Data; +using Managers; using UnityEngine; namespace Item { + /// + /// 表示游戏中的一个物品资源,包含了物品的各项基本属性和数据。 + /// 这是一个只读的数据结构,用于存储物品的定义信息。 + /// public class ItemResource { - public string name; - public string description; - - public Sprite icon; + /// + /// 构造函数:通过 ItemDef 对象初始化 ItemResource。 + /// + /// 物品的定义对象。 + /// 如果传入的 ItemDef 为 null,则抛出此异常。 + public ItemResource(ItemDef def) + { + // 参数校验:在构造函数中进行参数非空检查至关重要,避免空引用异常。 + if (def == null) throw new ArgumentNullException(nameof(def), "创建 ItemResource 时,ItemDef 不能为 null。"); + + // 从 ItemDef 对象中直接赋值 ItemResource 的所有属性。 + // 这将创建 ItemResource 的逻辑完全封装在类内部,外部调用方无需关心具体属性的提取过程。 + DefName = def.defName; + Name = def.label; + Description = def.description; + Rarity = def.rarity; + MaxStack = def.maxStack; + IsEquippable = def.ssEquippable; + FPS = def.FPS; + + var sprites = new List(); + var packID = def.packID; + + // 逻辑修改:添加对 def.textures 的非空检查,避免 NullReferenceException + if (def.textures != null) + { + foreach (var texture in def.textures) + { + var spr = PackagesImageManager.Instance.GetSprite(packID, texture); + if (spr) + sprites.Add(spr); + else + // 统一日志信息,说明哪个纹理加载失败 + Debug.LogWarning( + $"ItemResource: Failed to load sprite for texture '{texture}' for item '{def.defName}'."); + } + } + else + { + // 仅当 textures 为 null 时警告,因为它可能是预期的数据状态(无图标) + Debug.LogWarning( + $"ItemResource: ItemDef '{def.defName}' has a null textures array. No icons will be loaded."); + } + + // 逻辑修改:Icon 属性现在是 IReadOnlyList 类型,确保外部只读访问 + Icon = sprites.AsReadOnly(); // 使用 AsReadOnly() 获得一个只读包装器 + } + + /// + /// 物品的定义名称,通常作为其唯一标识符。 + /// + public string DefName { get; protected set; } + + /// + /// 物品的显示名称(例如,在UI中显示的名称)。 + /// + public string Name { get; protected set; } + + /// + /// 物品的描述文本。 + /// + public string Description { get; protected set; } + + /// + /// 物品的图标精灵集合。提供只读访问以保持数据结构不变性。 + /// + // 逻辑修改:Icon 属性更改为 IReadOnlyList + public IReadOnlyList Icon { get; protected set; } + + /// + /// 物品的稀有度。 + /// + public ItemRarity Rarity { get; protected set; } + + /// + /// 物品的最大堆叠数量。 + /// + public int MaxStack { get; protected set; } + + /// + /// 指示物品是否可以被装备。 + /// + public bool IsEquippable { get; protected set; } + + /// + /// 物品的帧率(如果适用)。 + /// + public float FPS { get; protected set; } + + public static ItemResource GetDefault() + { + ItemDef defaultDef = new() + { + defName = "default", + label = "错误物品", + description = "你看到这个物品表示加载出错了", + rarity = ItemRarity.Uncommon, + maxStack = 1, + ssEquippable = false + }; + return new ItemResource(defaultDef); + } } -} \ No newline at end of file +} diff --git a/Client/Assets/Scripts/Item/WeaponResource.cs b/Client/Assets/Scripts/Item/WeaponResource.cs new file mode 100644 index 0000000..019a2dc --- /dev/null +++ b/Client/Assets/Scripts/Item/WeaponResource.cs @@ -0,0 +1,239 @@ +using System; +using System.Collections.Generic; +using System.Linq; // Added for LINQ +using Base; +using Data; +using Entity; +using Prefab; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace Item +{ + public class WeaponResource : ItemResource + { + public Attributes Attributes { get; private set; } + public BulletDef Bullet { get; private set; } + public WeaponType Type { get; private set; } + + public DrawNodeDef AttackAnimationDef { get; private set; } + public float AttackAnimationTime{get; private set;} + + public float AttackDetectionTime{get;private set;} + + /// + /// 构造函数:通过 WeaponDef 对象初始化 WeaponResource。 + /// + /// 武器的定义对象。 + /// 如果传入的 WeaponDef 为 null,则抛出此异常。 + public WeaponResource(WeaponDef def) + : base(def) // 调用基类 ItemResource 的构造函数,直接传入 WeaponDef。 + { + // 参数校验:确保 WeaponDef 对象不为空,避免空引用异常。 + if (def == null) + { + throw new ArgumentNullException(nameof(def), "创建 WeaponResource 时,WeaponDef 不能为 null。"); + } + + Bullet = def.bullet; + // 初始化武器的属性。Attributes 对象通过 WeaponDef 中的属性数据进行构建。 + Attributes = new Attributes(def.attributes); + // 初始化武器类型,直接从 WeaponDef 定义中获取。 + Type = def.type; + AttackDetectionTime = def.attackDetectionTime; + + // 逻辑修改说明 1:存储 DrawNodeDef,而不是直接创建 GameObject。 + AttackAnimationDef = def.attackAnimation; + AttackAnimationTime = AttackAnimationDef?.GetAnimationCycleDuration() ?? 0.1f; + + } + + /// + /// 逻辑修改说明 2:新增公共方法:根据 WeaponResource 的定义创建攻击动画的运行时 GameObject 实例。 + /// 这是 WeaponResource 的工厂方法,用于按需创建动画对象。 + /// + /// 动画 GameObject 的父 Transform。 + /// 包含动画根 GameObject 和所有 ITick 组件的元组。 + public (GameObject root, ITick[] animationComponents) InstantiateAttackAnimation(Transform parent) + { + if (AttackAnimationDef == null) + { + Debug.LogWarning($"WeaponResource: 尝试实例化攻击动画但 _attackAnimationDef 为 null. 武器类型: {Type}"); + return (null, Array.Empty()); + } + + // 逻辑修改说明 4:在此处统一加载 ImagePrefab 和 SpriteAnimator,避免性能损耗。 + var imagePrefab = Resources.Load("Prefab/Image"); + var animatorPrefab = Resources.Load("Prefab/Animation"); + + if (imagePrefab == null) + { + Debug.LogError("InstantiateAttackAnimation: 无法加载 Prefab/Image."); + return (null, Array.Empty()); + } + if (animatorPrefab == null) + { + Debug.LogError("InstantiateAttackAnimation: 无法加载 Prefab/Animation."); + return (null, Array.Empty()); + } + + // 逻辑修改说明 2:调用修改后的私有辅助方法来创建 GameObject 层次结构。 + var animationRoot = _CreateBodyPartGameObject( + AttackAnimationDef, + parent, + imagePrefab, + animatorPrefab); + + if (animationRoot == null) + { + Debug.LogWarning($"WeaponResource: 创建攻击动画根节点失败. 武器类型: {Type}"); + return (null, Array.Empty()); + } + + // 逻辑修改说明 3:收集所有实现了 ITick 接口的组件。 + var tickComponents = animationRoot.GetComponentsInChildren(true); + // GetComponentsInChildren(true) 会查找包括自身在内的所有子对象上的组件,即使它们是处于非活动状态。 + + return (animationRoot, tickComponents); + } + + // 逻辑修改说明 4:修改 InitBodyPart 为 _CreateBodyPartGameObject,并设为 private static 方法。 + // 它现在接收 ImagePrefab 和 SpriteAnimator 作为参数,不再在内部加载。 + private static GameObject _CreateBodyPartGameObject(DrawNodeDef drawNode, Transform parent, ImagePrefab imagePrefab, SpriteAnimator animatorPrefab) + { + try + { + // 参数验证 + if (drawNode == null) + { + Debug.LogWarning("CreateBodyPartGameObject: drawNode参数为null"); + return null; + } + + if (parent == null) + { + // 逻辑修改说明:这里直接返回 null 更合适,因为没有父节点无法创建实例。 + Debug.LogWarning($"CreateBodyPartGameObject: 父节点为null (节点名: {drawNode.nodeName ?? "Unnamed DrawNode"})"); + return null; + } + + GameObject nodeObject = null; + // 根据纹理数量创建不同类型的节点 + switch (drawNode.textures?.Count ?? 0) + { + case 0: + // 无纹理节点 + nodeObject = new GameObject(drawNode.nodeName); + nodeObject.transform.SetParent(parent.transform, false); + break; + + case 1: + // 单纹理节点 + // imagePrefab 已作为参数传入,无需再次加载 + nodeObject = Object.Instantiate(imagePrefab.gameObject, parent.transform); + nodeObject.name = drawNode.nodeName ?? "UnnamedNode"; // 提前设置名称以在警告中显示 + + var texture = + Managers.PackagesImageManager.Instance?.GetSprite(drawNode.packID, + drawNode.textures[0]); + + if (!texture) + { + Debug.LogWarning( + $"CreateBodyPartGameObject: 无法获取纹理 (节点名: {nodeObject.name}, 纹理ID: {drawNode.textures[0]})"); + } + + var imagePrefabCom = nodeObject.GetComponent(); + if (imagePrefabCom != null) + { + imagePrefabCom.SetSprite(texture); + } + else + { + Debug.LogWarning($"CreateBodyPartGameObject: 无法获取ImagePrefab组件 (节点名: {nodeObject.name})"); + } + + break; + + default: + // 多纹理动画节点 + // animatorPrefab 已作为参数传入,无需再次加载 + nodeObject = Object.Instantiate(animatorPrefab.gameObject, parent.transform); + nodeObject.name = drawNode.nodeName ?? "UnnamedNode"; // 提前设置名称以在警告中显示 + + var animator = nodeObject.GetComponent(); + + if (animator == null) + { + Debug.LogWarning($"CreateBodyPartGameObject: 无法获取SpriteAnimator组件 (节点名: {nodeObject.name})"); + break; + } + + animator.SetFPS(drawNode.FPS); + var animatedSprites = new List(); + foreach (var textureId in drawNode.textures) + { + try + { + var sprite = + Managers.PackagesImageManager.Instance?.GetSprite(drawNode.packID, textureId); + if (sprite != null) + { + animatedSprites.Add(sprite); + } + else + { + Debug.LogWarning( + $"CreateBodyPartGameObject: 无法获取动画纹理 (节点名: {nodeObject.name}, 纹理ID: {textureId})"); + } + } + catch (Exception ex) + { + Debug.LogError( + $"CreateBodyPartGameObject: 加载动画纹理时出错 (节点名: {nodeObject.name}, 纹理ID: {textureId}): {ex.Message}"); + } + } + + if (animatedSprites.Count > 0) + { + animator.SetSprites(animatedSprites.ToArray()); + } + else + { + Debug.LogWarning($"CreateBodyPartGameObject: 没有有效的动画纹理 (节点名: {nodeObject.name})"); + } + + break; + } + + // 设置节点属性 (对于case 1, default 已经在上面设置了名称,这里可以作为 fallback 或统一处理) + if (nodeObject == null) return null; // 如果nodeObject在上面某些分支没有成功创建,提前返回 + + nodeObject.transform.localPosition = drawNode.position; + // nodeObject.name = drawNode.nodeName ?? "UnnamedNode"; // 不再需要,已在上面处理 + + // 递归初始化子节点 + if (drawNode.nodes == null) return nodeObject; + foreach (var child in drawNode.nodes) + { + try + { + // 逻辑修改说明 4:递归调用时,传递 prefab 参数。 + _CreateBodyPartGameObject(child, nodeObject.transform, imagePrefab, animatorPrefab); + } + catch (Exception ex) + { + Debug.LogError($"CreateBodyPartGameObject: 初始化子节点失败 (父节点: {nodeObject.name ?? drawNode.nodeName ?? "Unnamed Parent"}): {ex.Message}"); + } + } + + return nodeObject; + } + catch (Exception ex) + { + Debug.LogError($"CreateBodyPartGameObject: 初始化节点时发生未处理的异常 (节点名: {drawNode?.nodeName ?? "Unknown DrawNode"}): {ex}"); + return null; + } + } + } +} diff --git a/Client/Assets/Scripts/Item/WeaponResource.cs.meta b/Client/Assets/Scripts/Item/WeaponResource.cs.meta new file mode 100644 index 0000000..fa3d0b3 --- /dev/null +++ b/Client/Assets/Scripts/Item/WeaponResource.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: aa734e2254034fa4a59fb1e0cdea250f +timeCreated: 1756193577 \ No newline at end of file diff --git a/Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs b/Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs new file mode 100644 index 0000000..7c460ce --- /dev/null +++ b/Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs @@ -0,0 +1,17 @@ +using Managers; +using UnityEngine; + +namespace Logging +{ + public class LoggerManagerWrapper : ILaunchManager + { + public string StepDescription => "初始化日志"; + public void Init() + { + Logging.UnityLogger.Init(); + } + public void Clear() + { + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs.meta b/Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs.meta new file mode 100644 index 0000000..0e79cad --- /dev/null +++ b/Client/Assets/Scripts/Logging/LoggerManagerWrapper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ffa9f8b447ee49f486398248d438f7ca +timeCreated: 1756128101 \ No newline at end of file diff --git a/Client/Assets/Scripts/Logging/UnityLogger.cs b/Client/Assets/Scripts/Logging/UnityLogger.cs index af25e80..41d7025 100644 --- a/Client/Assets/Scripts/Logging/UnityLogger.cs +++ b/Client/Assets/Scripts/Logging/UnityLogger.cs @@ -9,10 +9,13 @@ namespace Logging private static readonly SerilogLogger Logger = new LoggerConfiguration() .WriteTo.File("Logs/UnityLog.txt") .CreateLogger(); - + private static bool _initialized = false; public static void Init() { + if(_initialized) + return; Application.logMessageReceived += OnLogMessageReceived; + _initialized = true; } private static void OnLogMessageReceived(string logString, string stackTrace, LogType type) diff --git a/Client/Assets/Scripts/Managers/AffiliationManager.cs b/Client/Assets/Scripts/Managers/AffiliationManager.cs index 3b7d108..24e5367 100644 --- a/Client/Assets/Scripts/Managers/AffiliationManager.cs +++ b/Client/Assets/Scripts/Managers/AffiliationManager.cs @@ -2,108 +2,175 @@ using System; using System.Collections.Generic; using System.Linq; using Data; +using UnityEngine; namespace Managers { - public class AffiliationManager:Utils.Singleton + /// + /// 阵营管理器,负责管理游戏中的所有阵营定义及其相互关系。 + /// 继承自 ,确保全局只有一个实例。 + /// + public class AffiliationManager:Utils.Singleton,ILaunchManager { - //定义名,阵营定义 + /// + /// 存储所有已加载的阵营定义,键为阵营的唯一名称,值为对应的 对象。 + /// private readonly Dictionary _affiliations = new(); - + + public string StepDescription => "正在区分派系"; + + /// + /// 初始化阵营管理器,从 加载所有 。 + /// 在首次需要阵营数据时调用。 + /// public void Init() { + // 如果管理器已经初始化,则直接返回,避免重复加载。 + if (_affiliations.Count > 0) + { + return; + } + var affiliationList = Managers.DefineManager.Instance.QueryDefinesByType(); - if (affiliationList == null ||affiliationList.Length==0) + if (affiliationList == null || affiliationList.Length == 0) + { + // 记录警告,说明未能加载任何阵营定义。 + Debug.LogWarning("未找到任何 AffiliationDef 或阵营列表为空。"); return; + } foreach (var affiliation in affiliationList) { - _affiliations.Add(affiliation.defName, affiliation); + // 尝试将阵营定义添加到字典中。如果名称已存在,则记录错误。 + if (!_affiliations.TryAdd(affiliation.defName, affiliation)) + { + Debug.LogError($"添加阵营 '{affiliation.defName}' 失败。已存在同名阵营。"); + } } + // 验证并修复加载后的阵营关系,以确保数据一致性。 ValidateAndFixRelationships(); } + /// + /// 清除所有已加载的阵营定义。 + /// 在游戏会话结束或需要重新加载所有定义时调用。 + /// + public void Clear() + { + _affiliations.Clear(); + } + + /// + /// 根据阵营定义名称获取其默认名称。 + /// + /// 阵营的定义名称。 + /// 阵营的默认名称。 public string GetAffiliationName(string defName) { return _affiliations[defName].defName; } + + /// + /// 获取两个阵营间的关系。 + /// + /// 第一个阵营的 对象。 + /// 第二个阵营的 对象。 + /// 两个阵营之间的 public Relation GetRelation(AffiliationDef affiliation1, AffiliationDef affiliation2) { + // 如果任一阵营定义为空,则返回中立关系。 if (affiliation1 == null || affiliation2 == null) { - return Relation.Neutral; // 如果任一阵营不存在,返回中立关系 + return Relation.Neutral; } return GetRelation(affiliation1.defName, affiliation2.defName); } + + public Relation GetRelation(Entity.Entity entity1, Entity.Entity entity2) + { + return GetRelation(entity1.affiliation, entity2.affiliation); + } + /// + /// 获取两个阵营名称之间的关系。 + /// + /// 第一个阵营的名称。 + /// 第二个阵营的名称。 + /// 两个阵营之间的 public Relation GetRelation(string factionName1, string factionName2) { - // 如果查询的是同一个派系,默认是友好关系 + // 如果查询的是同一个阵营,则默认为友好关系。 if (factionName1 == factionName2) { return Relation.Friendly; } - // 尝试获取两个派系的定义 + // 尝试获取两个阵营的定义。 if (!_affiliations.TryGetValue(factionName1, out var faction1) || !_affiliations.TryGetValue(factionName2, out _)) { + // 如果第一个阵营存在,但第二个不存在,返回第一个阵营的默认关系; + // 否则(两个都不存在或第一个不存在),返回中立。 if (faction1 != null) return faction1.defaultRelation; + // 注意:由于上面已经有一个 TryGetValue 判断, + // 此时 faction1 为 null 表示 factionName1 也不存在,所以应返回中立。 return Relation.Neutral; } - // 检查faction1是否明确将faction2列为敌对 + // 检查 faction1 是否将 faction2 明确列为敌对。 if (faction1.hostileFactions != null && faction1.hostileFactions.Contains(factionName2)) { return Relation.Hostile; } - // 检查faction1是否明确将faction2列为友好 + // 检查 faction1 是否将 faction2 明确列为友好。 if (faction1.friendlyFactions != null && faction1.friendlyFactions.Contains(factionName2)) { return Relation.Friendly; } - // 检查faction1是否明确将faction2列为中立 + // 检查 faction1 是否将 faction2 明确列为中立。 if (faction1.neutralFactions != null && faction1.neutralFactions.Contains(factionName2)) { return Relation.Neutral; } - // 如果faction1没有明确设置与faction2的关系,则使用faction1的默认关系 + // 如果 faction1 没有明确设置与 faction2 的关系,则使用 faction1 的默认关系。 return faction1.defaultRelation; } - + /// - /// 设置两个阵营之间的关系 + /// 设置两个阵营之间的关系。 /// - /// 第一个阵营名称 - /// 第二个阵营名称 - /// 要设置的关系 + /// 第一个阵营的名称。 + /// 第二个阵营的名称。 + /// 要设置的 。 + /// 当尝试设置同一个阵营的关系或其中一个阵营不存在时抛出。 + /// 当传入的关系类型无效时抛出。 public void SetRelation(string factionName1, string factionName2, Relation relation) { - // 不能设置自己与自己的关系 + // 不能设置自己与自己的关系。 if (factionName1 == factionName2) { - throw new ArgumentException("Cannot set relation between the same faction"); + throw new ArgumentException("不能设置同一个阵营之间的关系"); } - // 确保两个阵营都存在 + // 确保两个阵营都存在。 if (!_affiliations.TryGetValue(factionName1, out var faction1) || !_affiliations.TryGetValue(factionName2, out _)) { - throw new ArgumentException("One or both factions do not exist"); + throw new ArgumentException("一个或两个阵营不存在"); } - // 确保关系列表已初始化 + // 确保关系列表已初始化,避免空引用异常。 faction1.hostileFactions ??= new List(); faction1.friendlyFactions ??= new List(); faction1.neutralFactions ??= new List(); - // 先移除所有现有关系 + // 先移除 factionName2 在 faction1 所有关系列表中的现有关系。 faction1.hostileFactions.Remove(factionName2); faction1.friendlyFactions.Remove(factionName2); faction1.neutralFactions.Remove(factionName2); - // 添加新关系 + // 根据传入的关系类型,将 factionName2 添加到对应列表中。 switch (relation) { case Relation.Hostile: @@ -116,43 +183,45 @@ namespace Managers faction1.neutralFactions.Add(factionName2); break; default: + // 如果传入的关系类型无效,抛出异常。 throw new ArgumentOutOfRangeException(nameof(relation), relation, null); } } - + /// - /// 检查并修复派系关系,确保没有冲突(按友好 > 敌对 > 中立 的优先级) + /// 检查并修复所有阵营之间的关系,以确保没有冲突。 + /// 修复遵循优先级规则:友好关系优先于敌对关系,敌对关系优先于中立关系。 /// private void ValidateAndFixRelationships() { foreach (var faction in _affiliations.Values) { - // 确保所有关系列表已初始化 + // 确保所有关系列表已初始化,避免空引用异常。 faction.hostileFactions ??= new List(); faction.friendlyFactions ??= new List(); faction.neutralFactions ??= new List(); - // 检查所有敌对派系 + // 遍历并检查所有敌对阵营。由于可能修改列表,使用 ToList() 创建副本进行遍历。 foreach (var hostileFaction in faction.hostileFactions.ToList()) { - // 如果敌对派系同时存在于友好列表中,移除敌对关系(友好优先) + // 如果敌对阵营同时存在于友好列表中,则移除其敌对关系(友好关系具有更高优先级)。 if (faction.friendlyFactions.Contains(hostileFaction)) { faction.hostileFactions.Remove(hostileFaction); - continue; + continue; // 继续检查下一个敌对阵营。 } - // 如果敌对派系同时存在于中立列表中,移除中立关系(敌对优先) + // 如果敌对阵营同时存在于中立列表中,则移除其中立关系(敌对关系具有更高优先级)。 if (faction.neutralFactions.Contains(hostileFaction)) { faction.neutralFactions.Remove(hostileFaction); } } - // 检查所有中立派系 + // 遍历并检查所有中立阵营。由于可能修改列表,使用 ToList() 创建副本进行遍历。 foreach (var neutralFaction in faction.neutralFactions.ToList()) { - // 如果中立派系同时存在于友好列表中,移除中立关系(友好优先) + // 如果中立阵营同时存在于友好列表中,则移除其中立关系(友好关系具有更高优先级)。 if (faction.friendlyFactions.Contains(neutralFaction)) { faction.neutralFactions.Remove(neutralFaction); @@ -161,4 +230,4 @@ namespace Managers } } } -} \ No newline at end of file +} diff --git a/Client/Assets/Scripts/Managers/Buffer.cs b/Client/Assets/Scripts/Managers/Buffer.cs index e6613e9..074b086 100644 --- a/Client/Assets/Scripts/Managers/Buffer.cs +++ b/Client/Assets/Scripts/Managers/Buffer.cs @@ -56,7 +56,7 @@ namespace Managers lock (_lock) { // 交换读写缓冲区 - T temp = _readBuffer; + var temp = _readBuffer; _readBuffer = _writeBuffer; _writeBuffer = temp; } @@ -133,7 +133,7 @@ namespace Managers /// 缓冲区中的第一条消息,如果缓冲区为空则返回 null。 public static string ReadMessage() { - if (MessageQueue.TryDequeue(out string message)) + if (MessageQueue.TryDequeue(out var message)) { // 释放一个缓冲区空间 BufferSemaphore.Release(); diff --git a/Client/Assets/Scripts/Managers/DefineManager.cs b/Client/Assets/Scripts/Managers/DefineManager.cs index 6dbf489..f72dfa7 100644 --- a/Client/Assets/Scripts/Managers/DefineManager.cs +++ b/Client/Assets/Scripts/Managers/DefineManager.cs @@ -1,40 +1,73 @@ using System; using System.Collections; -using System.Collections.Concurrent; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Reflection; -using System.Threading.Tasks; using Data; using UnityEngine; using Utils; namespace Managers { - public class DefineManager : Singleton + /// + /// 定义管理器,负责加载、管理和查询所有数据定义(Define)对象。 + /// + /// + /// 该管理器是一个单例,用于在应用程序中集中管理各种游戏或系统定义, + /// 包括从不同数据包(Mods)加载定义,处理定义之间的引用,以及提供多种查询方法。 + /// + public class DefineManager : Singleton,ILaunchManager { + /// + /// 数据集文件路径数组,用于指定定义包的根目录。 + /// private static readonly string[] dataSetFilePath = { "Data", "Mods" }; - //类别,定义名,定义 + + /// + /// 存储所有按类别和定义名索引的定义。 + /// + /// + /// 外层字典的键是定义类别(例如,类的类型名),内层字典的键是定义的名称。 + /// public Dictionary> defines = new(); - //包id,包 + + /// + /// 存储所有按包ID索引的定义包。 + /// + /// + /// 键是定义包的唯一ID,值是对应的 对象。 + /// public Dictionary packs = new(); - //类别,定义 + + /// + /// 存储所有按类别索引的匿名定义列表。 + /// + /// + /// 匿名定义是没有明确 的定义,它们通常作为其他定义的子元素出现。 + /// 外层字典的键是定义类别,值是该类别下的匿名定义列表。 + /// public Dictionary> anonymousDefines = new(); + + public string StepDescription => "加载数据定义中"; + /// /// 初始化定义管理器,加载所有定义包并构建定义字典。 /// /// /// 该方法执行以下操作: - /// 1. 获取指定路径下的所有子文件夹,每个子文件夹代表一个定义包。 - /// 2. 遍历每个定义包,尝试加载其中的定义数据。 - /// 3. 将加载的定义数据按类型分类,并存储到定义字典中。 + /// + /// 获取指定路径下的所有子文件夹,每个子文件夹代表一个定义包。 + /// 遍历每个定义包,尝试加载其中的定义数据。 + /// 将加载的定义数据按类型分类,并存储到定义字典中。 + /// 处理定义内部的引用关系,将引用占位符替换为实际定义对象。 + /// /// public void Init() { if (packs.Count > 0) return; - // 单线程 + + // 获取所有定义包的文件夹路径 var packFolder = Configs.ConfigProcessor.GetSubFolders(new(dataSetFilePath)); foreach (var folder in packFolder) { @@ -45,14 +78,16 @@ namespace Managers } } - + // 字段信息缓存,用于优化反射性能。 Dictionary fieldCache = new(); - // 需要链接的定义、需要链接的字段、链接信息 + + // 存储需要进行链接的定义引用信息。 + // Tuple的元素依次代表:被引用的定义(Define),引用该定义的字段(FieldInfo),以及引用占位符(Define)。 List> defineCache = new(); - string currentPackID = string.Empty; - + string currentPackID; + // 递归处理定义对象及其内部的嵌套定义和引用。 void ProcessDefine(Define def) { if (def == null || def.isReferene) @@ -60,15 +95,14 @@ namespace Managers def.packID = currentPackID; - // 如果字段信息已经缓存,则直接使用缓存 + // 检查是否已缓存字段信息,如果已缓存则直接使用。 if (!fieldCache.TryGetValue(def.GetType(), out var defineFields)) { - // 获取所有字段类型为 Define 或其派生类型的字段 + // 获取所有公共实例字段。 defineFields = def.GetType() - .GetFields(BindingFlags.Public | BindingFlags.Instance) - .ToArray(); // 不再过滤,先获取所有字段 + .GetFields(BindingFlags.Public | BindingFlags.Instance); - // 缓存字段信息 + // 缓存当前类型的字段信息。 fieldCache[def.GetType()] = defineFields; } @@ -99,7 +133,7 @@ namespace Managers ProcessDefine(defRef); } } - // 处理集合类型字段 + // 处理 List 类型的字段 else if (fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(List<>)) { var elementType = fieldType.GenericTypeArguments[0]; @@ -110,7 +144,7 @@ namespace Managers { foreach (var item in list) { - if (item is Define defItem && !defItem.isReferene) + if (item is Define { isReferene: false } defItem) { ProcessDefine(defItem); } @@ -118,7 +152,7 @@ namespace Managers } } } - // 处理数组类型字段 + // 处理 Define[] 类型的数组字段 else if (fieldType.IsArray) { var elementType = fieldType.GetElementType(); @@ -129,7 +163,7 @@ namespace Managers { foreach (var item in array) { - if (item is Define defItem && !defItem.isReferene) + if (item is Define { isReferene: false } defItem) { ProcessDefine(defItem); } @@ -139,6 +173,7 @@ namespace Managers } } } + foreach (var pack in packs) { currentPackID = pack.Value.packID; @@ -154,6 +189,8 @@ namespace Managers } } } + + // 处理所有定义间的引用关系 foreach (var defRef in defineCache) { if (defRef.Item1 == null) @@ -186,19 +223,19 @@ namespace Managers } } - public void Reload() + public void Clear() { defines.Clear(); packs.Clear(); anonymousDefines.Clear(); - Init(); } + /// - /// 查找指定定义类型的定义名对应的 Define 对象。 + /// 查找指定定义类型的定义名对应的 对象。 /// - /// 定义类型 - /// 定义名 - /// 如果找到,返回 Define 对象;否则返回 null。 + /// 定义类型(通常是类的名称)。 + /// 定义名。 + /// 如果找到,返回 对象;否则返回 null。 public Define FindDefine(string defineType, string defineName) { if (defines.TryGetValue(defineType, out var typeDict)) @@ -210,23 +247,30 @@ namespace Managers } return null; } + /// - /// 使用模板查找并返回指定类型的 Define 对象。 + /// 使用泛型模板查找并返回指定类型的 对象。 /// - /// 目标类型 - /// 定义名 - /// 如果找到,返回转换为目标类型的 Define 对象;否则返回 null。 + /// 目标类型,必须继承自 + /// 定义名。 + /// 如果找到,返回转换为目标类型的 对象;否则返回 null。 public T FindDefine(string defineName) where T : Define { - foreach (var typeDict in defines.Values) + if (defines.TryGetValue(typeof(T).Name, out var typeDict)) { - if (typeDict.TryGetValue(defineName, out var define) && define is T result) + if (typeDict.TryGetValue(defineName, out var define)) { - return result; + return (T)define; } } return null; } + + /// + /// 获取指定 对象所属的定义包。 + /// + /// 要查询的 对象。 + /// 如果找到对应的定义包,则返回 对象;否则返回 null。 public DefinePack GetDefinePackage(Define define) { if (define == null || define.packID == null) @@ -235,10 +279,21 @@ namespace Managers return pack; } + /// + /// 获取指定 对象所属定义包的名称。 + /// + /// 要查询的 对象。 + /// 如果找到对应的定义包,则返回其名称;否则返回 null。 public string GetDefinePackageName(Define define) { return GetDefinePackage(define)?.Name; } + + /// + /// 获取指定包ID对应定义包的根路径。 + /// + /// 定义包的唯一标识ID。 + /// 如果找到对应的定义包,则返回其根路径;否则返回 null。 public string GetPackagePath(string packID) { if (packs.TryGetValue(packID, out var pack)) @@ -248,6 +303,10 @@ namespace Managers return null; } + /// + /// 获取所有已加载的 对象。 + /// + /// 包含所有命名定义和匿名定义的数组。 public Define[] GetAllDefine() { List defineList = new(); @@ -264,10 +323,10 @@ namespace Managers } /// - /// 查询指定类型下的所有 Define 对象。(包括匿名定义) + /// 查询指定类型下的所有 对象(包括命名定义和匿名定义)。 /// - /// 定义类型(外层字典的键)。 - /// 该类型下的 Define 数组,如果未找到则返回 null。 + /// 定义类型(外层字典的键,通常是类的名称)。 + /// 该类型下的 数组。如果未找到任何定义,则返回 null。 public Define[] QueryDefinesByType(string defineType) { if (string.IsNullOrEmpty(defineType)) @@ -276,21 +335,21 @@ namespace Managers return null; } - List result = new List(); + var result = new List(); - // 从命名定义中查询 + // 从命名定义中查询。 if (defines.TryGetValue(defineType, out var namedDefinitions)) { result.AddRange(namedDefinitions.Values); } - // 从匿名定义中查询 + // 从匿名定义中查询。 if (anonymousDefines.TryGetValue(defineType, out var anonymousDefinitionList)) { result.AddRange(anonymousDefinitionList); } - // 如果结果为空,则返回 null + // 如果结果为空,则返回 null。 if (result.Count == 0) { Debug.LogWarning($"查询失败:未找到定义类型 '{defineType}'"); @@ -299,16 +358,17 @@ namespace Managers return result.ToArray(); } + /// - /// 查询指定类型下的所有 Define 对象,并尝试转换为目标类型。(包括匿名定义) + /// 查询指定类型下的所有 对象,并尝试转换为目标类型(包括命名定义和匿名定义)。 /// - /// 目标类型。 - /// 转换后的目标类型数组,如果未找到或转换失败则返回 null。 - public T[] QueryDefinesByType() + /// 目标类型,必须继承自 + /// 转换后的目标类型数组。如果未找到或转换失败,则返回 null。 + public T[] QueryDefinesByType() where T : Define { var defineType = typeof(T).Name; - List allDefines = QueryDefinesByType(defineType)?.ToList(); + var allDefines = QueryDefinesByType(defineType)?.ToList(); if (allDefines == null || allDefines.Count == 0) { return null; @@ -316,7 +376,7 @@ namespace Managers try { - // 尝试将所有 Define 对象转换为目标类型 T + // 尝试将所有 对象转换为目标类型 T。 var result = new List(); foreach (var item in allDefines) { @@ -341,10 +401,10 @@ namespace Managers } /// - /// 查询指定类型下的所有 Define 对象(仅包含命名定义,不包括匿名定义)。 + /// 查询指定类型下的所有命名 对象(不包括匿名定义)。 /// - /// 定义类型(外层字典的键)。 - /// 该类型下的 Define 数组,如果未找到则返回 null。 + /// 定义类型(外层字典的键,通常是类的名称)。 + /// 该类型下的命名 数组。如果未找到任何命名定义,则返回 null。 public Define[] QueryNamedDefinesByType(string defineType) { if (string.IsNullOrEmpty(defineType)) @@ -353,15 +413,15 @@ namespace Managers return null; } - List result = new List(); + var result = new List(); - // 仅从命名定义中查询 + // 仅从命名定义中查询。 if (defines.TryGetValue(defineType, out var namedDefinitions)) { result.AddRange(namedDefinitions.Values); } - // 如果结果为空,则返回 null + // 如果结果为空,则返回 null。 if (result.Count == 0) { Debug.LogWarning($"查询失败:未找到定义类型 '{defineType}' 的命名定义"); @@ -372,15 +432,15 @@ namespace Managers } /// - /// 查询指定类型下的所有 Define 对象,并尝试转换为目标类型(仅包含命名定义,不包括匿名定义)。 + /// 查询指定类型下的所有命名 对象,并尝试转换为目标类型(不包括匿名定义)。 /// - /// 目标类型。 - /// 转换后的目标类型数组,如果未找到或转换失败则返回 null。 - public T[] QueryNamedDefinesByType() + /// 目标类型,必须继承自 + /// 转换后的目标类型数组。如果未找到或转换失败,则返回 null。 + public T[] QueryNamedDefinesByType() where T : Define { var defineType = typeof(T).Name; - List allDefines = QueryNamedDefinesByType(defineType)?.ToList(); + var allDefines = QueryNamedDefinesByType(defineType)?.ToList(); if (allDefines == null || allDefines.Count == 0) { return null; @@ -388,7 +448,7 @@ namespace Managers try { - // 尝试将所有 Define 对象转换为目标类型 T + // 尝试将所有 对象转换为目标类型 T。 var result = new List(); foreach (var item in allDefines) { @@ -411,22 +471,28 @@ namespace Managers return null; } } + + /// + /// 返回所有加载的定义包的字符串表示。 + /// + /// 一个包含所有定义包信息的字符串,每个包信息占一行。 public override string ToString() { if (packs == null || packs.Count == 0) { - return "No packs available"; // 如果集合为空或为 null,返回默认信息 + // 如果集合为空或为 null,返回默认信息。 + return "No packs available"; } var result = new System.Text.StringBuilder(); foreach (var definePack in packs) { - result.AppendLine(definePack.ToString()); // 每个元素占一行 + // 每个定义包对象占一行。 + result.AppendLine(definePack.ToString()); } return result.ToString(); } } } - diff --git a/Client/Assets/Scripts/Managers/EntityManage.cs b/Client/Assets/Scripts/Managers/EntityManage.cs index cec1588..cd1833f 100644 --- a/Client/Assets/Scripts/Managers/EntityManage.cs +++ b/Client/Assets/Scripts/Managers/EntityManage.cs @@ -2,296 +2,841 @@ using System; using System.Collections.Generic; using System.Linq; using Base; +using Data; using Entity; using Prefab; using UnityEngine; -using UnityEngine.Serialization; +using UnityEngine.SceneManagement; namespace Managers { + /// + /// 管理游戏中所有实体(角色、建筑、子弹等)的生命周期、存储和分发。 + /// 实现了维度感知,这意味着不同维度的实体数据是独立管理的。 + /// public class EntityManage : Utils.MonoSingleton, ITick { - public Dictionary> factionEntities = new(); + /// + /// 维度感知的实体存储结构。 + /// 外层字典按维度ID(DimensionId)索引,内层字典按派系键(FactionKey)索引, + /// 存储该派系下的实体预制体链表。 + /// + private Dictionary>> _dimensionFactionEntities = new(); + /// + /// 维度感知的层级Transform缓存。 + /// 外层字典按维度ID(DimensionId)索引,内层字典按层级名称(LayerName)索引, + /// 存储其对应的Transform。 + /// + private Dictionary> _dimensionLayerCache = new(); + + /// + /// 待添加的实体列表,用于在Tick循环中安全地将实体加入管理。 + /// Tuple包含:Item1=维度ID,Item2=派系键,Item3=实体预制体。 + /// + private List> + _pendingAdditions = new(); // Item1: DimensionId, Item2: FactionKey, Item3: EntityPrefab + + /// 角色实体的预制体。 public EntityPrefab characterPrefab; + public EntityPrefab monsterPrefab; + /// 建筑实体的预制体。 public EntityPrefab buildingPrefab; - public EntityPrefab bulletPrefab; + /// 子弹实体的预制体。 + public EntityPrefab bulletPrefab; + + public EntityPrefab pickupPrefab; + + /// 默认实体的预制体,用于生成失败时的回退。 public EntityPrefab defaultEntityPrefab; - private Dictionary layerCache = new Dictionary(); - private List> pendingAdditions = new(); - public LinkedList FindEntitiesByFaction(string factionKey) + /// + /// 在指定维度中,根据派系键查找所有实体。 + /// + /// 维度的唯一标识符。 + /// 派系键。 + /// 指定派系下的实体列表,如果未找到则返回空列表。 + public LinkedList FindEntitiesByFaction(string dimensionId, string factionKey) { - if (factionEntities.TryGetValue(factionKey, out var entities)) + // 如果在场景加载前或维度未在Program中注册,_dimensionFactionEntities可能还没有该维度ID的条目。 + if (!_dimensionFactionEntities.ContainsKey(dimensionId)) { - return entities; // 如果找到,返回对应的实体列表 + Debug.LogWarning($"实体管理器:尝试在维度 '{dimensionId}' 中查找实体,但其内部存储未初始化。"); + return new LinkedList(); } - return new(); // 如果未找到,返回一个空列表 + if (_dimensionFactionEntities.TryGetValue(dimensionId, out var factionDict)) + { + if (factionDict.TryGetValue(factionKey, out var entities)) + { + return entities; + } + } + + return new LinkedList(); // 如果未找到,返回一个空列表 } + /// + /// 每帧更新(Tick)方法:处理实体逻辑,清理死亡实体,并将待添加的实体加入管理。 + /// public void Tick() { - foreach (var faction in factionEntities) - { - var entitiesToRemove = new List(); + // 获取当前管理器中所有活跃维度ID的副本,以安全地迭代和移除。 + var activeDimensionIdsInManager = _dimensionFactionEntities.Keys.ToList(); - foreach (var entityPrefab in faction.Value) + foreach (var dimensionId in activeDimensionIdsInManager) + { + // 从 Program 中获取维度对象,验证其是否仍然活跃。 + var dimension = Program.Instance.GetDimension(dimensionId); + if (dimension == null) { - if (entityPrefab.entity.IsDead) + Debug.LogWarning( + $"实体管理器:跳过维度 '{dimensionId}' 的Tick处理,因为其维度对象在程序(Program)中已不再活跃(或从未注册)。正在清理相关内部数据。"); + // 如果 Program 不再有这个维度,说明它已经失效或被注销,EntityManage 需要清理自己的相关数据。 + _dimensionFactionEntities.Remove(dimensionId); + _dimensionLayerCache.Remove(dimensionId); + // 清理属于该维度的待添加实体。 + RemovePendingAdditionsForDimension(dimensionId); + continue; // 跳过处理这个不存在的维度 + } + + // 现在真正处理的是 _dimensionFactionEntities 中该维度ID对应的字典。 + var factionDict = _dimensionFactionEntities[dimensionId]; + + // 迭代 factionDict 的副本,以允许在迭代中修改 factionDict.Keys (即移除派系)。 + // ToList() 创建 KeyValuePair 的副本。 + foreach (var factionEntry in factionDict.ToList()) + { + var factionKey = factionEntry.Key; + var entities = factionEntry.Value; + + var entitiesToRemove = new List(); + // 创建副本以避免在迭代时修改列表。 + var currentEntities = entities.ToList(); + + foreach (var entityPrefab in currentEntities) { - entitiesToRemove.Add(entityPrefab); + // 检查实体预制体或其内部实体是否已销毁或死亡。 + if (entityPrefab == null || entityPrefab.entity == null || entityPrefab.entity.IsDead) + { + entitiesToRemove.Add(entityPrefab); + } + else + { + ITick itike = entityPrefab.entity; + itike.Tick(); + } } - else + + // 删除所有标记为死亡的实体。 + foreach (var entityToRemove in entitiesToRemove) { - ITick itike = entityPrefab.entity; - itike.Tick(); + entities.Remove(entityToRemove); + if (entityToRemove != null) + { + Destroy(entityToRemove.gameObject); + } + } + + // 如果一个派系下没有任何实体了,清理掉这个派系条目。 + if (entities.Count == 0) + { + factionDict.Remove(factionKey); } } - // 删除所有标记为死亡的实体 - foreach (var entityToRemove in entitiesToRemove) + // 如果某个维度在清理后已经没有了任何派系,也一并清理掉这个维度的层级缓存和实体数据。 + if (factionDict.Count == 0) { - faction.Value.Remove(entityToRemove); - Destroy(entityToRemove.gameObject); + _dimensionFactionEntities.Remove(dimensionId); + _dimensionLayerCache.Remove(dimensionId); // 对应的层级缓存也可以清理。 } } - if (pendingAdditions.Any()) + // 处理待添加实体 (现在维度感知)。 + if (_pendingAdditions.Any()) { - foreach (var entity in pendingAdditions) + // 使用 ToList() 创建副本进行迭代,允许在循环内部修改或清空 _pendingAdditions。 + foreach (var pending in _pendingAdditions.ToList()) { - if (!factionEntities.ContainsKey(entity.Item1)) + var dimensionId = pending.Item1; + var factionKey = pending.Item2; + var entityPrefab = pending.Item3; + + // 再次检查维度是否活跃(在 Program 中注册),防止在添加前维度被 Program 注销。 + if (Program.Instance.GetDimension(dimensionId) == null) { - factionEntities[entity.Item1] = new LinkedList(); + Debug.LogError( + $"实体管理器:尝试将实体 '{entityPrefab?.name ?? "null"}' 添加到在程序(Program)中未注册或不活跃的维度 '{dimensionId}'。该实体将被销毁。"); + if (entityPrefab != null && entityPrefab.gameObject != null) Destroy(entityPrefab.gameObject); + _pendingAdditions.Remove(pending); // 立即从待添加列表中移除已处理的条目。 + continue; } - factionEntities[entity.Item1].AddLast(entity.Item2); - } + // 确保 _dimensionFactionEntities 包含该 dimensionId,否则初始化(以防_OnSceneLoaded时Program中没有,但之后又注册了)。 + if (!_dimensionFactionEntities.ContainsKey(dimensionId)) + { + // 这情况意味着 Program 中有该维度,但在 EntityManage 内部数据结构中没有。 + // 这可能发生在 Program 动态注册了一个维度,但 EntityManage 尚未在 Tick 中检测到并初始化。 + // 或者 OnSceneLoaded 时 Program 中没有这个维度,但在游戏运行中被注册了。 + _dimensionFactionEntities[dimensionId] = new Dictionary>(); + _dimensionLayerCache[dimensionId] = new Dictionary(); + Debug.LogWarning($"实体管理器:在处理待添加实体时,按需为维度 '{dimensionId}' 初始化内部数据结构。"); + } - pendingAdditions.Clear(); + var factionDict = _dimensionFactionEntities[dimensionId]; + if (!factionDict.ContainsKey(factionKey)) + { + factionDict[factionKey] = new LinkedList(); + } + + factionDict[factionKey].AddLast(entityPrefab); + _pendingAdditions.Remove(pending); // 成功添加后从待添加列表中移除。 + } } } + /// + /// 辅助方法:清理属于特定维度的所有待添加实体。 + /// + /// 要清理的维度ID。 + private void RemovePendingAdditionsForDimension(string dimensionId) + { + // 创建一个新的列表来存储不属于指定维度的待添加实体。 + var remainingPendingAdditions = new List>(); + foreach (var pending in _pendingAdditions) + { + if (pending.Item1 == dimensionId) + { + // 如果实体属于要清理的维度,则销毁其GameObject。 + if (pending.Item3 != null && pending.Item3.gameObject != null) + { + Destroy(pending.Item3.gameObject); + } + } + else + { + remainingPendingAdditions.Add(pending); + } + } + + _pendingAdditions = remainingPendingAdditions; + } + /// /// 根据给定的Def生成实体对象(内部通用方法)。 /// - /// 要实例化的预制体 - /// 生成的父级Transform - /// 生成位置 - /// 实体定义对象 - /// 额外的初始化操作(如子弹方向设置) - /// 成功时返回EntityPrefab组件,失败时返回null + /// 实体所属的维度ID。 + /// 要实例化的预制体。 + /// 生成位置。 + /// 实体定义对象。 + /// 额外的初始化操作(如子弹方向设置)。 + /// 成功时返回EntityPrefab组件,失败时返回null。 private EntityPrefab GenerateEntityInternal( + string dimensionId, GameObject prefab, - Transform parent, Vector3 pos, - Data.EntityDef def, // 所有Def类型需继承自BaseDef + EntityDef def, Action extraInit = null) { + // 验证维度是否活跃 (通过 Program)。 + var dimension = Program.Instance.GetDimension(dimensionId); + if (dimension == null) + { + Debug.LogError($"实体管理器:无法生成实体:维度 '{dimensionId}' 在程序(Program)中不活跃或未注册。"); + return null; + } + + // 获取或创建实体所属的层级Transform,并确保其在维度根下。 + var parentLayer = EnsureLayerExists(dimensionId, "DefaultEntityLevel"); + if (parentLayer == null) + { + Debug.LogError($"实体管理器:无法在维度 '{dimensionId}' 中获取或创建实体的父层。"); + return null; + } + GameObject instantiatedEntity = null; try { - // 实例化实体 - instantiatedEntity = Instantiate(prefab, pos, Quaternion.identity, parent); + // 实例化实体,并将其父级设置为维度下的层级Transform。 + instantiatedEntity = Instantiate(prefab, pos, Quaternion.identity, parentLayer); - // 获取并验证EntityPrefab组件 var entityComponent = instantiatedEntity.GetComponent(); if (!entityComponent) { throw new InvalidOperationException( - $"EntityPrefab component missing on: {instantiatedEntity.name}"); + $"在 '{instantiatedEntity.name}' 上缺少 EntityPrefab 组件,无法完成实体初始化。"); } - - // 初始化核心数据 + entityComponent.entity.currentDimensionId=dimensionId; entityComponent.Init(def); - - // 执行类型特有的额外初始化 extraInit?.Invoke(entityComponent); - // 管理派系列表 var factionKey = def.attributes.defName ?? "default"; - pendingAdditions.Add(Tuple.Create(factionKey, entityComponent)); + _pendingAdditions.Add(Tuple.Create(dimensionId, factionKey, entityComponent)); return entityComponent; } - catch (System.Exception ex) + catch (Exception ex) { - // 清理失败实例 if (instantiatedEntity) Destroy(instantiatedEntity); - - Debug.LogError($"Entity generation failed: {ex.Message}\n{ex.StackTrace}"); + Debug.LogError($"实体管理器:在维度 '{dimensionId}' 中生成实体失败:{ex.Message}\n{ex.StackTrace}"); return null; } } /// - /// 动态创建层(如果层不存在) + /// 动态创建层(如果层不存在),现在是维度感知的。 + /// 每个维度有自己的层级结构,根在 Dimension.DimensionRoot 下。 /// - private Transform EnsureLayerExists(string layerName) + /// 维度的唯一标识符。 + /// 要确保存在的层级名称。 + /// 层级Transform,如果维度不存在或其根Transform为空则返回null。 + private Transform EnsureLayerExists(string dimensionId, string layerName) { - // 先从缓存中查找 - if (layerCache.TryGetValue(layerName, out var layerTransform)) + // 尝试从维度层级缓存中获取。如果没有该维度的缓存,先尝试初始化。 + if (!_dimensionLayerCache.TryGetValue(dimensionId, out var layerCacheForDimension)) + { + // 如果 Program 中有这个维度,但在 EntityManage 内部没有初始化,则尝试进行初始化。 + // 这种情况可能发生在 OnSceneLoaded 之后,Program 动态注册了新的维度。 + if (Program.Instance.GetDimension(dimensionId) != null) + { + _dimensionLayerCache[dimensionId] = new Dictionary(); + layerCacheForDimension = _dimensionLayerCache[dimensionId]; // 更新引用。 + } + else + { + return null; + } + } + + if (layerCacheForDimension.TryGetValue(layerName, out var layerTransform)) { return layerTransform; } - // 如果缓存中没有,尝试通过 transform.Find 查找 - layerTransform = transform.Find(layerName); + // 如果缓存中没有,尝试在维度根下查找。 + var dimension = Program.Instance.GetDimension(dimensionId); + if (dimension == null || dimension.DimensionRoot == null) + { + Debug.LogError($"实体管理器:维度 '{dimensionId}' (来自 Program) 或其根 Transform 为空。无法创建层级 '{layerName}'。"); + return null; + } + + layerTransform = dimension.DimensionRoot.Find(layerName); if (!layerTransform) { - // 如果层不存在,动态创建 + // 如果层不存在,动态创建并将其父级设置为维度的根Transform。 var layerObject = new GameObject(layerName); layerTransform = layerObject.transform; - layerTransform.SetParent(transform, false); // 将层附加到当前管理器下 + layerTransform.SetParent(dimension.DimensionRoot); + // 移除了此处的 Debug.Log,因为它属于非必要的普通日志。 } - // 将新创建的层加入缓存 - layerCache[layerName] = layerTransform; - + // 将新创建的层加入缓存。 + layerCacheForDimension[layerName] = layerTransform; return layerTransform; } /// - /// 根据PawnDef生成普通实体 + /// 在指定维度和位置生成一个通用实体。 /// - public void GenerateEntity(Data.EntityDef entityDef, Vector3 pos) + /// 实体所属的维度ID。 + /// 实体定义对象。 + /// 生成位置。 + public void GenerateEntity(string dimensionId, EntityDef entityDef, Vector3 pos) { - // 验证关键参数 if (!characterPrefab) { - Debug.LogError("entityPrefab is null! Assign a valid prefab."); - GenerateDefaultEntity(pos); + Debug.LogError("实体管理器:characterPrefab 为空!请分配一个有效的预制体。"); + GenerateDefaultEntity(dimensionId, pos); return; } if (entityDef == null) { - Debug.LogError("EntityDef is null! Cannot generate entity."); - GenerateDefaultEntity(pos); + Debug.LogError("实体管理器:EntityDef 为空!无法生成实体。"); + GenerateDefaultEntity(dimensionId, pos); return; } - // 确保层存在 - var entityLevelTransform = EnsureLayerExists("EntityLevel"); - - // 调用通用生成逻辑 var result = GenerateEntityInternal( + dimensionId, characterPrefab.gameObject, - entityLevelTransform, pos, entityDef ); - - if (!result) GenerateDefaultEntity(pos); + if (result == null) GenerateDefaultEntity(dimensionId, pos); } - - /// - /// 生成建筑实体(位置使用Vector3Int) - /// - public void GenerateBuildingEntity(Data.BuildingDef buildingDef, Vector3Int pos) + public void GenerateMonsterEntity(string dimensionId, MonsterDef monsterDef, Vector3 pos) + { + if (!monsterPrefab) + { + Debug.LogError("实体管理器:monsterPrefab 为空!请分配一个有效的预制体。"); + GenerateDefaultEntity(dimensionId, pos); + return; + } + + if (monsterDef == null) + { + Debug.LogError("实体管理器:monsterDef 为空!无法生成实体。"); + GenerateDefaultEntity(dimensionId, pos); + return; + } + + var result = GenerateEntityInternal( + dimensionId, + monsterPrefab.gameObject, + pos, + monsterDef + ); + if (result == null) GenerateDefaultEntity(dimensionId, pos); + } + /// + /// 在指定维度和网格位置生成一个建筑实体。 + /// + /// 实体所属的维度ID。 + /// 建筑定义对象。 + /// 网格位置。 + public void GenerateBuildingEntity(string dimensionId, BuildingDef buildingDef, Vector3Int pos) { - // 修正:检查正确的预制体 (buildingPrefab) if (!buildingPrefab) { - Debug.LogError("buildingPrefab is null! Assign a valid prefab."); - GenerateDefaultEntity(pos); + Debug.LogError("实体管理器:buildingPrefab 为空!请分配一个有效的预制体。"); + GenerateDefaultEntity(dimensionId, pos); return; } if (buildingDef == null) { - Debug.LogError("BuildingDef is null! Cannot generate building."); - GenerateDefaultEntity(pos); + Debug.LogError("实体管理器:BuildingDef 为空!无法生成建筑。"); + GenerateDefaultEntity(dimensionId, pos); return; } var worldPos = new Vector3(pos.x, pos.y, pos.z); - - // 确保层存在 - var buildingLevelTransform = EnsureLayerExists("BuildingLevel"); - var result = GenerateEntityInternal( + dimensionId, buildingPrefab.gameObject, - buildingLevelTransform, worldPos, buildingDef ); - - if (!result) GenerateDefaultEntity(worldPos); + if (result == null) GenerateDefaultEntity(dimensionId, worldPos); } /// - /// 生成子弹实体(含方向设置) + /// 在指定维度、位置和方向上生成一个子弹实体。 /// - public void GenerateBulletEntity(Data.BulletDef bulletDef, Vector3 pos, Vector3 dir, + /// 实体所属的维度ID。 + /// 子弹定义对象。 + /// 生成位置。 + /// 子弹的初始方向。 + /// 发射子弹的源实体。 + public void GenerateBulletEntity(string dimensionId, BulletDef bulletDef, Vector3 pos, Vector3 dir, Entity.Entity source = null) { - // 修正:检查正确的预制体 (bulletPrefab) if (!bulletPrefab) { - Debug.LogError("bulletPrefab is null! Assign a valid prefab."); - GenerateDefaultEntity(pos); + Debug.LogError("实体管理器:bulletPrefab 为空!请分配一个有效的预制体。"); + GenerateDefaultEntity(dimensionId, pos); return; } if (bulletDef == null) { - Debug.LogError("BulletDef is null! Cannot generate bullet."); - GenerateDefaultEntity(pos); + Debug.LogError("实体管理器:BulletDef 为空!无法生成子弹。"); + GenerateDefaultEntity(dimensionId, pos); return; } - // 确保层存在 - var bulletLevelTransform = EnsureLayerExists("BulletLevel"); - var result = GenerateEntityInternal( + dimensionId, bulletPrefab.gameObject, - bulletLevelTransform, pos, bulletDef, - // 子弹特有的方向设置 - entityComponent => entityComponent.entity.SetTarget(pos + dir) + entityComponent => + { + if (entityComponent != null && entityComponent.entity != null) + { + entityComponent.entity.SetTarget(pos + dir); + } + else + { + Debug.LogWarning($"实体管理器:在维度 '{dimensionId}' 的额外初始化期间,子弹实体组件或其内部实体为空。"); + } + } ); - if (result.entity is Bullet bullet) + + if (result != null && result.entity is Bullet bullet) { bullet.bulletSource = source; - if (source) bullet.affiliation = source.affiliation; + if (source != null) bullet.affiliation = source.affiliation; } - if (!result) GenerateDefaultEntity(pos); + if (result == null) GenerateDefaultEntity(dimensionId, pos); } - - /// - /// 生成默认实体(错误回退) - /// - public void GenerateDefaultEntity(Vector3 pos) + public void GeneratePickupEntity(string dimensionId, ItemDef itemDef, Vector3 pos) { - // 确保层存在 - var entityLevelTransform = EnsureLayerExists("EntityLevel"); + if (!pickupPrefab) + { + Debug.LogError("实体管理器:pickupPrefab 为空!请分配一个有效的预制体。"); + GenerateDefaultEntity(dimensionId, pos); + return; + } - var entity = Instantiate(defaultEntityPrefab, pos, Quaternion.identity, entityLevelTransform); + if (itemDef == null) + { + Debug.LogError("实体管理器:itemDef 为空!无法生成子弹。"); + GenerateDefaultEntity(dimensionId, pos); + return; + } + var dimension = Program.Instance.GetDimension(dimensionId); + if (dimension == null) + { + Debug.LogError($"实体管理器:无法生成实体:维度 '{dimensionId}' 在程序(Program)中不活跃或未注册。"); + return; + } + // 获取或创建实体所属的层级Transform,并确保其在维度根下。 + var parentLayer = EnsureLayerExists(dimensionId, "DefaultEntityLevel"); + if (parentLayer == null) + { + Debug.LogError($"实体管理器:无法在维度 '{dimensionId}' 中获取或创建实体的父层。"); + return; + } + + var result=Instantiate(pickupPrefab, pos, Quaternion.identity); + var pickup = result.GetComponent(); + result.transform.SetParent(parentLayer); + pickup.Init(itemDef); + if (result == null) GenerateDefaultEntity(dimensionId, pos); + _pendingAdditions.Add(Tuple.Create(dimensionId, "default", result)); + + } + /// + /// 在指定维度和位置生成一个默认实体(通常作为回退选项)。 + /// + /// 实体所属的维度ID。 + /// 生成位置。 + public void GenerateDefaultEntity(string dimensionId, Vector3 pos) + { + if (Program.Instance.GetDimension(dimensionId) == null) + { + Debug.LogError($"实体管理器:无法生成默认实体:维度 '{dimensionId}' 在程序(Program)中不活跃或未注册。"); + return; + } + + var parentLayer = EnsureLayerExists(dimensionId, "DefaultEntityLevel"); + if (parentLayer == null) + { + Debug.LogError($"实体管理器:无法在维度 '{dimensionId}' 中获取默认实体的父 Transform。"); + return; + } + + if (defaultEntityPrefab == null || defaultEntityPrefab.gameObject == null) + { + Debug.LogError($"实体管理器:defaultEntityPrefab 为空或没有GameObject。无法为维度 '{dimensionId}' 生成默认实体。"); + return; + } + + var entity = Instantiate(defaultEntityPrefab, pos, Quaternion.identity, parentLayer); var entityComponent = entity.GetComponent(); - const string factionKey = "default"; - pendingAdditions.Add(Tuple.Create(factionKey, entityComponent)); + if (entityComponent == null) + { + Debug.LogError($"实体管理器:默认实体预制体 '{defaultEntityPrefab.name}' 缺少 EntityPrefab 组件。正在销毁已实例化的对象。"); + Destroy(entity.gameObject); + return; + } + const string factionKey = "default"; + _pendingAdditions.Add(Tuple.Create(dimensionId, factionKey, entityComponent)); entityComponent.DefaultInit(); } + /// + /// 在指定维度中,查找与源实体具有特定关系的最近实体。 + /// + /// 要搜索的维度ID。 + /// 作为参照的源实体预制体。 + /// 目标实体与源实体之间的期望关系(例如,Friendly, Hostile)。 + /// 找到的最近实体预制体,如果没有找到符合条件的实体则返回 null。 + public EntityPrefab FindNearestEntityByRelation(string dimensionId, EntityPrefab sourceEntityPrefab, + Relation targetRelationship) + { + // 参数校验:确保输入参数有效,避免空引用异常。 + if (sourceEntityPrefab == null || sourceEntityPrefab.entity == null) + { + Debug.LogWarning("实体管理器:FindNearestEntityByRelation 方法中,源实体预制体或其内部实体为空。无法执行搜索。"); + return null; + } + + // 维度数据存在性检查:验证目标维度是否在实体管理器的内部数据结构中被初始化和管理。 + if (!_dimensionFactionEntities.TryGetValue(dimensionId, out var factionDict)) + { + Debug.LogWarning($"实体管理器:FindNearestEntityByRelation 方法中,维度 '{dimensionId}' 未被初始化或未在内部管理实体。"); + return null; + } + + // 初始化追踪变量:设置初始值,用于在遍历过程中追踪最近的实体及其距离。 + // 使用平方距离 (SqrMagnitude) 可以避免在每次距离计算时进行昂贵的开方运算,从而提高性能。 + EntityPrefab nearestTarget = null; + var minDistanceSqr = float.MaxValue; + var sourcePos = sourceEntityPrefab.transform.position; + + // 关系管理器实例检查:确保 AffiliationManager 可用,它是判断实体关系的核心组件。 + var affiliationManager = AffiliationManager.Instance; + if (affiliationManager == null) + { + Debug.LogError("实体管理器:FindNearestEntityByRelation 方法中,AffiliationManager 实例为空。无法确定实体关系。"); + return null; + } + + // 遍历所有派系和实体:_dimensionFactionEntities 按维度和派系组织,需要遍历所有派系才能找到维度内的所有实体。 + foreach (var factionEntities in factionDict.Values) // factionDict.Values 是 LinkedList 的集合 + { + foreach (var currentEntityPrefab in factionEntities) + { + // 实体有效性及排除源实体自身: + // 1. 排除无效或已死亡的实体,确保只处理活跃的实体。 + // 2. 在寻找“最近”实体时,通常指的是 *除了自身以外* 的实体。 + // 如果需要包含自身(例如,当 targetRelationship 是 AffiliationManager.Relation.Self 时), + // 可以根据具体需求调整此逻辑,但默认行为是排除自身。 + if (currentEntityPrefab == null || currentEntityPrefab.entity == null || + currentEntityPrefab.entity.IsDead || currentEntityPrefab == sourceEntityPrefab) + { + continue; + } + + // 关系判断:使用 AffiliationManager 提供的接口判断源实体与当前遍历实体之间的关系。 + var currentRelation = + affiliationManager.GetRelation(sourceEntityPrefab.entity, currentEntityPrefab.entity); + if (currentRelation == targetRelationship) + { + // 距离计算与最近实体更新: + // 1. 计算与源实体的距离(使用平方距离优化)。 + // 2. 如果当前实体更近,则更新 nearestTarget 和 minDistanceSqr。 + var distanceSqr = Vector3.SqrMagnitude(currentEntityPrefab.transform.position - sourcePos); + if (distanceSqr < minDistanceSqr) + { + minDistanceSqr = distanceSqr; + nearestTarget = currentEntityPrefab; + } + } + } + } + + return nearestTarget; // 返回找到的最近实体 + } + + /// + /// 在指定维度中,判断是否存在任何与源实体敌对的活跃实体。 + /// + /// 要搜索的维度ID。 + /// 作为参照的源实体预制体。 + /// 如果存在敌对实体则返回 true,否则返回 false。 + public bool ExistsHostile(string dimensionId, EntityPrefab sourceEntityPrefab) + { + // 参数校验:确保输入参数有效,避免空引用异常。 + if (sourceEntityPrefab == null || sourceEntityPrefab.entity == null) + { + Debug.LogWarning("实体管理器:ExistsHostile 方法中,源实体预制体或其内部实体为空。无法执行搜索。"); + return false; + } + + // 维度数据存在性检查:验证目标维度是否在实体管理器的内部数据结构中被初始化和管理。 + if (!_dimensionFactionEntities.TryGetValue(dimensionId, out var factionDict)) + { + Debug.LogWarning($"实体管理器:ExistsHostile 方法中,维度 '{dimensionId}' 未被初始化或未在内部管理实体。"); + return false; + } + + // 关系管理器实例检查:确保 AffiliationManager 可用,它是判断实体关系的核心组件。 + var affiliationManager = AffiliationManager.Instance; + if (affiliationManager == null) + { + Debug.LogError("实体管理器:ExistsHostile 方法中,AffiliationManager 实例为空。无法确定实体关系。"); + return false; + } + + // 遍历所有实体:遍历维度内的所有派系,再遍历每个派系下的所有实体。 + foreach (var factionEntities in factionDict.Values) + { + foreach (var currentEntityPrefab in factionEntities) + { + // 实体有效性及排除源实体自身: + // 1. 排除无效或已死亡的实体。 + // 2. 排除源实体自身,避免自身判断为敌对。 + if (currentEntityPrefab == null || currentEntityPrefab.entity == null || + currentEntityPrefab.entity.IsDead || currentEntityPrefab == sourceEntityPrefab) + { + continue; + } + + // 关系判断:判断当前实体与源实体是否为“敌对”关系。 + if (affiliationManager.GetRelation(sourceEntityPrefab.entity, currentEntityPrefab.entity) == + Relation.Hostile) + { + return true; // 找到第一个敌对实体即返回 true,提高效率。 + } + } + } + + return false; // 遍历完所有实体都未找到敌对实体。 + } + + /// + /// 在指定维度中,判断源实体视野范围内是否存在任何与源实体敌对的活跃实体。 + /// + /// 要搜索的维度ID。 + /// 作为参照的源实体预制体。 + /// 视野范围,实体间的距离小于等于此值视为在视野内。 + /// 如果视野范围内存在敌对实体则返回 true,否则返回 false。 + public bool ExistsHostileInSightRange(string dimensionId, EntityPrefab sourceEntityPrefab, float sightRange) + { + // 参数校验:确保输入参数有效,避免空引用异常及不合理的范围值。 + if (sourceEntityPrefab == null || sourceEntityPrefab.entity == null) + { + Debug.LogWarning("实体管理器:ExistsHostileInSightRange 方法中,源实体预制体或其内部实体为空。无法执行搜索。"); + return false; + } + + if (sightRange <= 0) + { + Debug.LogWarning($"实体管理器:ExistsHostileInSightRange 方法中,视野范围必须为正值。接收到的值为: {sightRange}。"); + return false; + } + + // 维度数据存在性检查:验证目标维度是否在实体管理器的内部数据结构中被初始化和管理。 + if (!_dimensionFactionEntities.TryGetValue(dimensionId, out var factionDict)) + { + Debug.LogWarning($"实体管理器:ExistsHostileInSightRange 方法中,维度 '{dimensionId}' 未被初始化或未在内部管理实体。"); + return false; + } + + // 关系管理器实例检查:确保 AffiliationManager 可用,它是判断实体关系的核心组件。 + var affiliationManager = AffiliationManager.Instance; + if (affiliationManager == null) + { + Debug.LogError("实体管理器:ExistsHostileInSightRange 方法中,AffiliationManager 实例为空。无法确定实体关系。"); + return false; + } + + // 预计算平方距离:避免在循环内部重复计算平方根,提高性能。 + var sightRangeSqr = sightRange * sightRange; + var sourcePos = sourceEntityPrefab.transform.position; + // 遍历所有实体:遍历维度内的所有派系,再遍历每个派系下的所有实体。 + foreach (var factionEntities in factionDict.Values) + { + foreach (var currentEntityPrefab in factionEntities) + { + // 实体有效性及排除源实体自身: + // 1. 排除无效或已死亡的实体。 + // 2. 排除源实体自身。 + if (currentEntityPrefab == null || currentEntityPrefab.entity == null || + currentEntityPrefab.entity.IsDead || currentEntityPrefab == sourceEntityPrefab) + { + continue; + } + + // 关系判断:判断当前实体与源实体是否为“敌对”关系。 + if (affiliationManager.GetRelation(sourceEntityPrefab.entity, currentEntityPrefab.entity) == + Relation.Hostile) + { + // 距离判断:如果关系敌对,进一步判断其是否在视野范围内。 + var distanceSqr = Vector3.SqrMagnitude(currentEntityPrefab.transform.position - sourcePos); + if (distanceSqr <= sightRangeSqr) + { + return true; // 找到第一个视野范围内的敌对实体即返回 true。 + } + } + } + } + + return false; // 遍历完所有实体都未找到视野范围内的敌对实体。 + } + + /// + /// 单例管理器启动时调用,订阅场景加载事件。 + /// protected override void OnStart() { - factionEntities.Clear(); - + SceneManager.sceneLoaded += OnSceneLoaded; } + /// + /// 单例管理器销毁时调用,取消订阅场景加载事件。 + /// + private void OnDestroy() + { + SceneManager.sceneLoaded -= OnSceneLoaded; + } + + /// + /// 场景加载完成时的回调。 + /// 清理旧场景的实体数据,并基于 Program 中已注册的维度重新初始化内部结构。 + /// + private void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + _dimensionFactionEntities.Clear(); // 清理所有旧场景的实体数据。 + _dimensionLayerCache.Clear(); // 清理所有旧场景的层级缓存。 + + // 场景加载时清理待添加列表中的所有实体,因为它们可能属于旧场景或未在任何维度中被处理。 + foreach (var pending in _pendingAdditions) + { + if (pending.Item3 != null && pending.Item3.gameObject != null) + { + Destroy(pending.Item3.gameObject); + } + } + + _pendingAdditions.Clear(); // 清理待添加实体列表。 + + // 在新场景加载完成后,遍历 Program 中已注册的所有维度,并为每个维度初始化 EntityManage 的内部数据结构。 + // 此时 Program.Awake() 应该已经完成,所有 Dimension 组件的 Awake() 也已执行,Program.RegisteredDimensions 应该包含了当前场景的所有维度。 + foreach (var registeredDimensionEntry in Program.Instance.RegisteredDimensions) + { + var dimensionId = registeredDimensionEntry.Key; + var dimension = registeredDimensionEntry.Value; + + if (dimension != null) // 确保维度实例本身不是null。 + { + // 为该维度ID初始化实体存储结构。 + _dimensionFactionEntities[dimensionId] = new Dictionary>(); + // 为该维度ID初始化层级缓存。 + _dimensionLayerCache[dimensionId] = new Dictionary(); + } + else + { + Debug.LogWarning( + $"实体管理器:在场景加载初始化期间,Program 为ID '{dimensionId}' 注册了一个空的 Dimension 对象。这可能表明维度注册存在问题。"); + } + } + } + + /// + /// MonoBehaviour 的 Start 方法,用于初始化默认实体预制体。 + /// private void Start() { - var pre = Resources.Load("Default/DefaultEntity"); - defaultEntityPrefab = pre.GetComponent(); - layerCache.Clear(); + if (defaultEntityPrefab == null) + { + var pre = Resources.Load("Default/DefaultEntity"); + if (pre != null) + { + defaultEntityPrefab = pre.GetComponent(); + if (defaultEntityPrefab == null) + { + Debug.LogError( + $"实体管理器:已加载 DefaultEntity 预制体,但它缺少来自 Resources/Default/DefaultEntity 的 EntityPrefab 组件。请确保它包含该组件。"); + } + } + else + { + Debug.LogError( + "实体管理器:无法从 Resources/Default/DefaultEntity 加载 DefaultEntity 预制体。请确保它存在于 'Assets/Resources/Default/DefaultEntity.prefab'。"); + } + } } } -} \ No newline at end of file +} diff --git a/Client/Assets/Scripts/Managers/EventManager.cs b/Client/Assets/Scripts/Managers/EventManager.cs new file mode 100644 index 0000000..6864145 --- /dev/null +++ b/Client/Assets/Scripts/Managers/EventManager.cs @@ -0,0 +1,181 @@ +using System.Collections.Generic; +using Data; +using UnityEngine; +using EventType = Data.EventType; + +namespace Managers +{ + // 新增私有结构体,用于在事件队列中存储事件定义及其运行时上下文 + public struct EventPayload // Make it public if EventManager exposes it directly + { + public string DimensionId; + public EventDef EventDefinition; + public Vector3 Position; // 适用于 Character, Bullet, Pickup, DefaultEntity + public Vector3 Direction; // 仅适用于 Bullet + public Entity.Entity SourceEntity; // 仅适用于 Bullet (发射源) + public Vector3Int GridPosition; // 仅适用于 Building + } + + public class EventManager : Utils.MonoSingleton + { + private Queue _eventQueue = new Queue(); + + private EventManager() + { + /* Private constructor for singleton */ + } + + // =================================== + // 公共入队方法 + // =================================== + public void EnqueueCharacterSpawnEvent(string dimensionId, EventDef eventDef, Vector3 pos) + { + if (eventDef == null || eventDef.eventType != EventType.SpawnCharacter || + eventDef.entityDef_Character == null) + { + Debug.LogError( + $"EnqueueCharacterSpawnEvent: Invalid EventDef, mismatched EventType ({eventDef?.eventType}), or missing characterDef for event '{eventDef?.defName ?? "Unknown"}'."); + return; + } + + _eventQueue.Enqueue(new EventPayload + { + DimensionId = dimensionId, + EventDefinition = eventDef, + Position = pos, + }); + Debug.Log($"Event '{eventDef.defName}' (SpawnCharacter) enqueued for dimension {dimensionId} at {pos}."); + } + + public void EnqueueBuildingSpawnEvent(string dimensionId, EventDef eventDef, Vector3Int gridPos) + { + if (eventDef == null || eventDef.eventType != EventType.SpawnBuilding || + eventDef.entityDef_Building == null) + { + Debug.LogError( + $"EnqueueBuildingSpawnEvent: Invalid EventDef, mismatched EventType ({eventDef?.eventType}), or missing buildingDef for event '{eventDef?.defName ?? "Unknown"}'."); + return; + } + + _eventQueue.Enqueue(new EventPayload + { + DimensionId = dimensionId, + EventDefinition = eventDef, + GridPosition = gridPos, + }); + Debug.Log($"Event '{eventDef.defName}' (SpawnBuilding) enqueued for dimension {dimensionId} at grid {gridPos}."); + } + + public void EnqueueBulletSpawnEvent(string dimensionId, EventDef eventDef, Vector3 pos, Vector3 dir, + Entity.Entity source = null) + { + if (eventDef == null || eventDef.eventType != EventType.SpawnBullet || eventDef.entityDef_Bullet == null) + { + Debug.LogError( + $"EnqueueBulletSpawnEvent: Invalid EventDef, mismatched EventType ({eventDef?.eventType}), or missing bulletDef for event '{eventDef?.defName ?? "Unknown"}'."); + return; + } + + _eventQueue.Enqueue(new EventPayload + { + DimensionId = dimensionId, + EventDefinition = eventDef, + Position = pos, + Direction = dir, + SourceEntity = source, + }); + Debug.Log($"Event '{eventDef.defName}' (SpawnBullet) enqueued for dimension {dimensionId} at {pos}, dir {dir}."); + } + + public void EnqueuePickupSpawnEvent(string dimensionId, EventDef eventDef, Vector3 pos) + { + if (eventDef == null || eventDef.eventType != EventType.SpawnPickup || eventDef.entityDef_Pickup == null) + { + Debug.LogError( + $"EnqueuePickupSpawnEvent: Invalid EventDef, mismatched EventType ({eventDef?.eventType}), or missing itemDef for event '{eventDef?.defName ?? "Unknown"}'."); + return; + } + + _eventQueue.Enqueue(new EventPayload + { + DimensionId = dimensionId, + EventDefinition = eventDef, + Position = pos, + }); + Debug.Log($"Event '{eventDef.defName}' (SpawnPickup) enqueued for dimension {dimensionId} at {pos}."); + } + + public void EnqueueDefaultEntitySpawnEvent(string dimensionId, EventDef eventDef, Vector3 pos) + { + if (eventDef == null || eventDef.eventType != EventType.SpawnDefaultEntity) + { + Debug.LogError( + $"EnqueueDefaultEntitySpawnEvent: Invalid EventDef or mismatched EventType ({eventDef?.eventType}) for event '{eventDef?.defName ?? "Unknown"}'."); + return; + } + + _eventQueue.Enqueue(new EventPayload + { + DimensionId = dimensionId, + EventDefinition = eventDef, + Position = pos, + }); + Debug.Log($"Event '{eventDef.defName}' (SpawnDefaultEntity) enqueued for dimension {dimensionId} at {pos}."); + } + + // =================================== + // 事件处理方法 + // =================================== + /// + /// 处理所有在队列中的待处理事件。 + /// + public void ProcessEvents() + { + while (_eventQueue.Count > 0) + { + EventPayload eventData = _eventQueue.Dequeue(); + if (!Program.Instance.GetDimension(eventData.DimensionId)) + { + Debug.LogWarning( + $"Event '{eventData.EventDefinition.defName}' for dimension {eventData.DimensionId} dropped as dimension is no longer active."); + continue; + } + + // 核心:调用 EntityManage.Instance 的现有公共方法 + switch (eventData.EventDefinition.eventType) + { + case EventType.SpawnCharacter: + EntityManage.Instance.GenerateEntity(eventData.DimensionId, + eventData.EventDefinition.entityDef_Character, eventData.Position); + break; + case EventType.SpawnBuilding: + EntityManage.Instance.GenerateBuildingEntity(eventData.DimensionId, + eventData.EventDefinition.entityDef_Building, eventData.GridPosition); + break; + case EventType.SpawnBullet: + EntityManage.Instance.GenerateBulletEntity(eventData.DimensionId, + eventData.EventDefinition.entityDef_Bullet, eventData.Position, eventData.Direction, + eventData.SourceEntity); + break; + case EventType.SpawnPickup: + EntityManage.Instance.GeneratePickupEntity(eventData.DimensionId, + eventData.EventDefinition.entityDef_Pickup, eventData.Position); + break; + case EventType.SpawnDefaultEntity: + EntityManage.Instance.GenerateDefaultEntity(eventData.DimensionId, eventData.Position); + break; + case EventType.None: + default: + Debug.LogWarning( + $"EventManager: Unhandled or invalid event type: {eventData.EventDefinition.eventType} for event '{eventData.EventDefinition.defName}'."); + break; + } + } + } + + protected override void OnStart() + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Managers/EventManager.cs.meta b/Client/Assets/Scripts/Managers/EventManager.cs.meta new file mode 100644 index 0000000..d3c6c61 --- /dev/null +++ b/Client/Assets/Scripts/Managers/EventManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fe7c735088384400a50b418f85252c70 +timeCreated: 1756268066 \ No newline at end of file diff --git a/Client/Assets/Scripts/Managers/ILaunchManager.cs b/Client/Assets/Scripts/Managers/ILaunchManager.cs new file mode 100644 index 0000000..3b70db6 --- /dev/null +++ b/Client/Assets/Scripts/Managers/ILaunchManager.cs @@ -0,0 +1,9 @@ +namespace Managers +{ + public interface ILaunchManager + { + string StepDescription { get; } // 获取当前加载步骤的描述 + void Init(); // 初始化管理器 + void Clear(); // 清理管理器,用于重载 + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Managers/ILaunchManager.cs.meta b/Client/Assets/Scripts/Managers/ILaunchManager.cs.meta new file mode 100644 index 0000000..9e7147e --- /dev/null +++ b/Client/Assets/Scripts/Managers/ILaunchManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f8ff16ea8a2b4418b313286456905b99 +timeCreated: 1756125228 \ No newline at end of file diff --git a/Client/Assets/Scripts/Managers/ItemResourceManager.cs b/Client/Assets/Scripts/Managers/ItemResourceManager.cs index 033b5c5..b31cb7f 100644 --- a/Client/Assets/Scripts/Managers/ItemResourceManager.cs +++ b/Client/Assets/Scripts/Managers/ItemResourceManager.cs @@ -2,46 +2,89 @@ using System.Collections.Generic; using System.Linq; using Data; using Item; +using UnityEngine; namespace Managers { - public class ItemResourceManager:Utils.Singleton + public class ItemResourceManager : Utils.Singleton,ILaunchManager { - //定义名,物品 - public Dictionary items; - - + private ItemResource defaultItem; + private readonly Dictionary _items = new(); + private readonly Dictionary> _itemsByName = new(); // 保持按显示名称查找的字典 + + public string StepDescription => "加载物品定义中"; + public void Init() { - var itemDefs = Managers.DefineManager.Instance.QueryDefinesByType(); - if(itemDefs==null||itemDefs.Length==0) + defaultItem=ItemResource.GetDefault(); + var baseItemDefs = Managers.DefineManager.Instance.QueryDefinesByType(); + var weaponDefs = Managers.DefineManager.Instance.QueryDefinesByType(); + + var allDefs = new List(); + if (baseItemDefs != null) allDefs.AddRange(baseItemDefs); + if (weaponDefs != null) allDefs.AddRange(weaponDefs); + + if (allDefs.Count == 0) + { + Debug.LogWarning("ItemResourceManager: No ItemDef or WeaponDef found to initialize."); return; - foreach (var itemDef in itemDefs) - { - var item=new Item.ItemResource(); - item.name = itemDef.label; - item.description = itemDef.description; + } - item.icon = Managers.PackagesImageManager.Instance.GetSprite(itemDef.texture); + foreach (var def in allDefs) + { + if (_items.ContainsKey(def.defName)) + { + Debug.LogError( + $"ItemResourceManager: Duplicate itemDef.defName found: {def.defName}. Skipping this item."); + continue; + } + + Item.ItemResource itemResource; + + if (def is WeaponDef currentWeaponDef) + { + itemResource = new Item.WeaponResource( + currentWeaponDef + ); + } + else + { + itemResource = new Item.ItemResource( + def + ); + } + + _items.Add(def.defName, itemResource); + if (!_itemsByName.ContainsKey(itemResource.Name)) + { + _itemsByName.Add(itemResource.Name, new List()); + } + _itemsByName[itemResource.Name].Add(itemResource); } } - public ItemResource GetItem(string defName) + public Item.ItemResource GetItem(string defName) { - return items.GetValueOrDefault(defName,null); + return _items.GetValueOrDefault(defName, null); } - // - /// 按物品名称查找物品 - /// - /// 要查找的物品名称 - /// 找到的物品对象,如果未找到则返回 null - public ItemResource FindItemByName(string itemName) + public Item.ItemResource FindItemByName(string itemName) { - if (string.IsNullOrEmpty(itemName)) - { - return null; - } - return items.Values.FirstOrDefault(item => item.name == itemName); + if (string.IsNullOrEmpty(itemName)) return null; + return _itemsByName.GetValueOrDefault(itemName)?.FirstOrDefault(); + } + + public List FindAllItemsByName(string itemName) + { + if (string.IsNullOrEmpty(itemName)) return new List(); + return _itemsByName.GetValueOrDefault(itemName, new List()); + } + + public void Clear() + { + _items.Clear(); + _itemsByName.Clear(); } } + + } \ No newline at end of file diff --git a/Client/Assets/Scripts/Managers/PackagesImageManager.cs b/Client/Assets/Scripts/Managers/PackagesImageManager.cs index 4be15a5..8fe17f4 100644 --- a/Client/Assets/Scripts/Managers/PackagesImageManager.cs +++ b/Client/Assets/Scripts/Managers/PackagesImageManager.cs @@ -3,205 +3,199 @@ using System.Collections.Generic; using System.IO; using System.Linq; using Data; -using NUnit.Framework; using UnityEngine; namespace Managers { - public class PackagesImageManager : Utils.Singleton + /// + /// 包图像管理器,负责加载、管理和提供从定义数据中解析出的纹理和精灵。 + /// + /// + /// 该管理器是一个单例,并在启动过程中实现 ILaunchManager 接口, + /// 用于处理游戏或应用启动时图像资源的加载和初始化。 + /// + public class PackagesImageManager : Utils.Singleton, ILaunchManager { + /// + /// 默认精灵,在找不到对应图像时返回。 + /// public Sprite defaultSprite; - //包名,图片名 - public Dictionary> packagesImages = new(); - //包名,图片名 - public Dictionary> sprites = new(); - //包名,文件路径,身体部件名 - public Dictionary>> bodyTexture = new(); + /// + /// 存储所有已加载的纹理,按包ID和图像名称索引。 + /// + /// + /// 外层字典键是包ID,内层字典键是图像名称。 + /// + public Dictionary> packagesImages = new(); + + /// + /// 存储所有已创建的精灵,按包ID和精灵名称索引。 + /// + /// + /// 外层字典键是包ID,内层字典键是精灵名称(如果纹理被分割,会包含索引后缀)。 + /// + public Dictionary> sprites = new(); + + /// + /// 获取当前启动步骤的描述。 + /// + public string StepDescription { get; private set; } = "包图像管理器正在准备中..."; + + /// + /// 初始化图像管理器,加载默认精灵并处理所有 ImageDef 定义。 + /// public void Init() { if (packagesImages.Count > 0) - return; - defaultSprite = Resources.Load("Default/DefaultImage"); - InitImageDef(); - InitDrawOrder(); - } - - public void InitImageDef() - { - var imageDef = Managers.DefineManager.Instance.QueryDefinesByType(); - foreach (var ima in imageDef) { - if (ima.path == null || ima.packID == null) - continue; - var pack = Managers.DefineManager.Instance.GetDefinePackage(ima); - var path = Path.Combine(pack.packRootPath, ima.path); - var texture = Configs.ConfigProcessor.LoadTextureByIO(path); - if (texture == null) - continue; - - var packId = ima.packID; - - if (!packagesImages.ContainsKey(packId)) - packagesImages[packId] = new Dictionary(); - packagesImages[packId].Add(ima.name, texture); - - SplitTextureIntoSprites(packId, ima.name, texture, ima.hCount, ima.wCount, ima.pixelsPerUnit); + // 如果已经加载过,直接返回。 + StepDescription = "包图像管理器已初始化。"; + return; } + StepDescription = "正在加载默认精灵..."; // 更新加载步骤描述 + defaultSprite = Resources.Load("Default/DefaultImage"); + if (defaultSprite == null) + { + Debug.LogWarning("无法加载默认精灵 'Resources/Default/DefaultImage'。请确保文件存在。"); + } + + StepDescription = "正在处理图像定义并创建精灵..."; // 更新加载步骤描述 + InitImageDef(); + StepDescription = "包图像管理器初始化完成。"; // 完成加载 } - public void InitDrawOrder() + /// + /// 根据 ImageDef 定义初始化并加载所有纹理和精灵。 + /// + public void InitImageDef() { - try + var textureCache = new Dictionary(); + var imageDef = Managers.DefineManager.Instance.QueryDefinesByType(); + + if (imageDef == null || !imageDef.Any()) { - // 查询绘制顺序定义 - var drawOrderDef = Managers.DefineManager.Instance.QueryDefinesByType(); - if (drawOrderDef == null || drawOrderDef.Length == 0) + Debug.Log($"在 DefineManager 中未找到任何 ImageDef 定义。({typeof(ImageDef).Name})"); + return; + } + + foreach (var ima in imageDef) + { + if (string.IsNullOrEmpty(ima.path) || string.IsNullOrEmpty(ima.packID)) { - Debug.LogWarning("No DrawingOrderDef found."); - return; + Debug.LogWarning($"跳过图像定义 '{ima?.name ?? "未知"}',因为它包含空路径或包ID。(路径: '{ima?.path ?? ""}', 包ID: '{ima?.packID ?? ""}')"); + continue; } - // 初始化包路径字典 - Dictionary packRootSite = new(); - - foreach (var drawOrder in drawOrderDef) + try { - // 检查必要字段是否为空 - if (string.IsNullOrEmpty(drawOrder.texturePath) || string.IsNullOrEmpty(drawOrder.packID)) + string cacheKey; + Texture2D texture = null; + + if (ima.path.StartsWith("res:")) { - Debug.LogWarning( - $"Skipping invalid drawOrder: texturePath or packID is null or empty. PackID: {drawOrder.packID}"); - continue; - } + // 处理 Resources 路径 + var resPath = ima.path.Substring(4).Replace('\\', '/').TrimStart('/'); + cacheKey = "res://" + resPath.ToLower(); // 缓存键使用小写路径 - // 获取包路径 - if (!packRootSite.ContainsKey(drawOrder.packID)) - { - var packagePath = Managers.DefineManager.Instance.GetPackagePath(drawOrder.packID); - if (string.IsNullOrEmpty(packagePath)) + // 检查纹理缓存 + if (!textureCache.TryGetValue(cacheKey, out texture)) { - Debug.LogError($"Package path not found for packID: {drawOrder.packID}"); + var cleanPath = Path.ChangeExtension(resPath, null); // 去掉扩展名 + texture = Resources.Load(cleanPath); + if (texture) + textureCache[cacheKey] = texture; + } + } + else if (ima.path.Contains(':')) + { + // 处理其他包ID前缀(如 "PackageID:Path") + var splitIndex = ima.path.IndexOf(':'); + var packageID = ima.path.Substring(0, splitIndex); + var relativePath = ima.path.Substring(splitIndex + 1); + + // 获取包根路径 + var packageRoot = Managers.DefineManager.Instance.GetPackagePath(packageID); + if (string.IsNullOrEmpty(packageRoot)) + { + Debug.LogWarning($"图像定义 '{ima.name}' (包ID: {ima.packID}): 引用的包ID '{packageID}' 未找到或没有根路径。跳过图像加载。"); continue; } - packRootSite[drawOrder.packID] = packagePath; - } + var fullPath = Path.Combine(packageRoot, relativePath).Replace('\\', '/'); + cacheKey = "file://" + fullPath.ToLower(); // 缓存键使用小写路径 - // 判断是否为 Unity 资源路径 - var isUnityResource = drawOrder.texturePath.StartsWith("res:", StringComparison.OrdinalIgnoreCase); - var rootPath = packRootSite[drawOrder.packID]; - - if (isUnityResource) - { - // 移除 "res:" 前缀并适配 Unity 资源路径规则 - var resourceFolder = drawOrder.texturePath.Substring(4).TrimStart('/').Replace('\\', '/'); - - // 加载文件夹下的所有纹理资源 - var textures = Resources.LoadAll(resourceFolder); - if (textures == null || textures.Length == 0) + // 检查纹理缓存 + if (!textureCache.TryGetValue(cacheKey, out texture)) { - Debug.LogWarning($"No textures found in Unity resource folder: {resourceFolder}"); - continue; - } - - foreach (var image in textures) - { - if (image == null) - { - Debug.LogWarning( - $"Texture loaded from Unity resource folder: {resourceFolder} is null."); - continue; - } - - // 创建精灵 - try - { - var spr = Sprite.Create( - image, - new Rect(0, 0, image.width, image.height), - new Vector2(0.5f, 0.5f), // 中心点 - drawOrder.pixelsPerUnit - ); - var name = image.name; - - // 插入纹理 - InsertBodyTexture(drawOrder.packID, drawOrder.texturePath, name, spr); - } - catch (Exception ex) - { - Debug.LogError( - $"Failed to create sprite from Unity resource: {image.name}. Error: {ex.Message}"); - } + texture = Configs.ConfigProcessor.LoadTextureByIO(fullPath); + if (texture) + textureCache[cacheKey] = texture; } } else { - // 文件系统路径处理 - var folderPath = Path.Combine(rootPath, drawOrder.texturePath); - - // 获取图像文件列表 - try + // 无前缀:使用当前定义所在包的路径 + var pack = Managers.DefineManager.Instance.GetDefinePackage(ima); + if (pack == null) { - var imagePath = Configs.ConfigProcessor.GetFilesByExtensions(folderPath, - new[] { "jpg", "jpeg", "png", "tga", "tif", "tiff", "psd", "bmp" }); - - foreach (var path in imagePath) - { - // 加载纹理 - Texture2D image = null; - try - { - image = Configs.ConfigProcessor.LoadTextureByIO(path); - } - catch (Exception ex) - { - Debug.LogError($"Failed to load texture from path: {path}. Error: {ex.Message}"); - continue; - } - - if (image == null) - { - Debug.LogWarning($"Texture loaded from path: {path} is null."); - continue; - } - - // 创建精灵 - try - { - var spr = Sprite.Create( - image, - new Rect(0, 0, image.width, image.height), - new Vector2(0.5f, 0.5f), // 中心点 - drawOrder.pixelsPerUnit - ); - - var name = Path.GetFileNameWithoutExtension(path); - - // 插入纹理 - InsertBodyTexture(drawOrder.packID, drawOrder.texturePath, name, spr); - } - catch (Exception ex) - { - Debug.LogError( - $"Failed to create sprite from texture: {path}. Error: {ex.Message}"); - } - } + Debug.LogError($"图像定义 '{ima.name}' (包ID: {ima.packID}): 源图像未找到对应的定义包。无法确定 '{ima.path}' 的完整路径。跳过。"); + continue; } - catch (Exception ex) + var fullPath = Path.Combine(pack.packRootPath, ima.path).Replace('\\', '/'); + cacheKey = "file://" + fullPath.ToLower(); // 缓存键使用小写路径 + + // 检查纹理缓存 + if (!textureCache.TryGetValue(cacheKey, out texture)) { - Debug.LogError($"Failed to retrieve files from folder: {folderPath}. Error: {ex.Message}"); + texture = Configs.ConfigProcessor.LoadTextureByIO(fullPath); + if (texture) + textureCache[cacheKey] = texture; } } + + // 资源加载失败 + if (!texture) + { + Debug.LogError($"未能加载图像定义所在的纹理: '{ima.name}' (路径: '{ima.path}', 包ID: '{ima.packID}')。请验证路径和文件是否存在。"); + continue; + } + + // 存储到包纹理字典(使用定义自身的 packID) + var packId = ima.packID; + if (!packagesImages.ContainsKey(packId)) + packagesImages[packId] = new Dictionary(); + + // 警告:如果图片名重复,则覆盖 + if (packagesImages[packId].ContainsKey(ima.name)) + { + Debug.LogWarning($"包 '{packId}' 中名为 '{ima.name}' 的图像被多次定义。将覆盖之前的纹理引用。这可能表示配置错误。"); + } + packagesImages[packId][ima.name] = texture; // 覆盖或添加 + + + // 切分精灵 + SplitTextureIntoSprites(packId, ima.name, texture, ima.hCount, ima.wCount, ima.pixelsPerUnit); + } + catch (Exception ex) + { + // 捕获异常并打印详细错误信息 + Debug.LogError( + $"处理图像定义时出错: '{ima.name}' (路径: '{ima.path}', 包ID: '{ima.packID}')。异常: {ex.GetType().Name}: {ex.Message}\n堆栈跟踪: {ex.StackTrace}"); } - } - catch (Exception ex) - { - Debug.LogError($"An unexpected error occurred in InitDrawOrder: {ex.Message}"); } } + /// + /// 将纹理按指定行数和列数分割成多个精灵,并存储起来。 + /// + /// 精灵所属的包ID。 + /// 精灵的基础名称。 + /// 要分割的 对象。 + /// 水平分割的行数。 + /// 垂直分割的列数。 + /// 每个单元的像素数,用于Sprite.Create。 private void SplitTextureIntoSprites( string packId, string baseName, @@ -210,9 +204,9 @@ namespace Managers int cols, int pixelsPerUnit) { - if (texture == null) + if (!texture) { - Debug.LogError("Texture is null."); + Debug.LogError($"SplitTextureIntoSprites: 包 '{packId}' 中 '{baseName}' 提供的纹理为空。无法分割。"); return; } @@ -223,60 +217,107 @@ namespace Managers var textureWidth = texture.width; var textureHeight = texture.height; - // 如果不分割(rows和cols都为1),直接创建单个Sprite - if (rows == 1 && cols == 1) - { - if (!sprites.ContainsKey(packId)) - sprites[packId] = new Dictionary(); - - var spriteRect = new Rect(0, 0, textureWidth, textureHeight); - var sprite = Sprite.Create(texture, spriteRect, new Vector2(0.5f, 0.5f), pixelsPerUnit); - sprites[packId][baseName] = sprite; - return; - } - - var tileWidth = textureWidth / cols; - var tileHeight = textureHeight / rows; - - if (tileWidth * cols != textureWidth || tileHeight * rows != textureHeight) - { - Debug.LogError("Texture dimensions are not divisible by the specified rows and columns."); - return; - } - if (!sprites.ContainsKey(packId)) sprites[packId] = new Dictionary(); + // 创建未分割的完整精灵,使用原始名称 + var fullSpriteRect = new Rect(0, 0, textureWidth, textureHeight); + // 警告:如果精灵名重复,则覆盖 + if (sprites[packId].ContainsKey(baseName)) + { + Debug.LogWarning($"包 '{packId}' 中名为 '{baseName}' 的精灵已存在。将覆盖之前的完整精灵定义。"); + } + var fullSprite = Sprite.Create(texture, fullSpriteRect, new Vector2(0.5f, 0.5f), pixelsPerUnit); + fullSprite.name = baseName; // 确保 Sprite.name 被设置 + sprites[packId][baseName] = fullSprite; + + // 如果不分割(rows和cols都为1),提前返回 + if (rows == 1 && cols == 1) + { + return; + } + + // 检查纹理尺寸是否可被分割数整除 + if (textureWidth % cols != 0 || textureHeight % rows != 0) + { + Debug.LogError($"包 '{packId}' 中 '{baseName}' 的纹理尺寸 ({textureWidth}x{textureHeight}) 不能被指定的行数 ({rows}) 和列数 ({cols}) 完美整除。子精灵将不会生成或可能不正确。仅显示完整精灵。"); + return; // 终止子精灵分割,只保留完整的精灵 + } + + var tileWidth = textureWidth / cols; + var tileHeight = textureHeight / rows; + for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) { - Rect spriteRect = new(col * tileWidth, row * tileHeight, tileWidth, tileHeight); + Rect spriteRect = new(col * tileWidth, row * tileHeight, tileWidth, tileHeight); var sprite = Sprite.Create(texture, spriteRect, new Vector2(0.5f, 0.5f), pixelsPerUnit); - - var index = (rows - row - 1) * cols + col; - var spriteName = $"{baseName}_{index}"; + // 精灵索引计算方式 + var index = (rows - row - 1) * cols + col; + var spriteName = $"{baseName}_{index}"; + sprite.name = spriteName; + + // 警告:如果子精灵名重复,则覆盖 + if (sprites[packId].ContainsKey(spriteName)) + { + Debug.LogWarning($"包 '{packId}' 中名为 '{spriteName}' 的精灵已存在。将覆盖之前的子精灵定义。这可能表示配置错误。"); + } sprites[packId][spriteName] = sprite; } } } - - public void Reload() + + /// + /// 清理所有已加载的纹理和精灵数据。 + /// + /// + /// 此方法会清空 字典, + /// 但不会卸载 ,因为它通常通过 Resources.Load 加载,由 Unity 管理其生命周期。 + /// + public void Clear() { packagesImages.Clear(); sprites.Clear(); - Init(); + StepDescription = "包图像管理器数据已清理。"; // 更新状态 } + /// + /// 重新加载所有图像数据。 + /// + /// + /// 此方法会首先调用 清理所有数据,然后调用 重新初始化。 + /// + public void Reload() + { + Clear(); + Init(); + } + + + /// + /// 根据 对象获取对应的精灵。 + /// + /// 包含精灵包ID和名称的 对象。 + /// 如果找到对应的精灵,则返回该精灵;否则返回 public Sprite GetSprite(ImageDef ima) { - return GetSprite(ima.packID,ima.name); + if (ima == null) return defaultSprite; + return GetSprite(ima.packID, ima.name); } + + /// + /// 根据包ID和精灵名称获取对应的精灵。 + /// + /// 精灵所属的包ID。如果为空,则会遍历所有包查找。 + /// 精灵的名称。 + /// 如果找到对应的精灵,则返回该精灵;否则返回 public Sprite GetSprite(string packID, string name) { if (string.IsNullOrEmpty(packID)) { + // 如果packID为空,遍历所有包以name查找 foreach (var kvp in sprites) { if (kvp.Value.TryGetValue(name, out var sprite)) @@ -289,104 +330,21 @@ namespace Managers return sprite; } + // 如果未找到,返回默认精灵 return defaultSprite; } + /// + /// 根据包ID、基础名称和索引获取被分割的子精灵。 + /// + /// 精灵所属的包ID。 + /// 精灵的基础名称。 + /// 子精灵的索引。 + /// 如果找到对应的子精灵,则返回该精灵;否则返回 public Sprite GetSprite(string packID, string name, int index) { var fullName = $"{name}_{index}"; return GetSprite(packID, fullName); } - /// - /// 向 bodyTexture 插入一张 Sprite。 - /// 如果包名、路径或部件名原本不存在,会自动建立对应的 Dictionary。 - /// - /// 包名 - /// 文件路径 - /// 身体部件名 - /// 要插入的 Sprite - public void InsertBodyTexture(string packageName, - string filePath, - string bodyPartName, - Sprite sprite) - { - if (sprite == null) - { - Debug.LogWarning("InsertBodyTexture: sprite 为 null,已忽略。"); - return; - } - - // 1) 处理包名层级 - if (!bodyTexture.TryGetValue(packageName, out var pathDict)) - { - pathDict = new Dictionary>(); - bodyTexture[packageName] = pathDict; - } - - // 2) 处理文件路径层级 - if (!pathDict.TryGetValue(filePath, out var partDict)) - { - partDict = new Dictionary(); - pathDict[filePath] = partDict; - } - - // 3) 插入或覆盖部件名 - partDict[bodyPartName] = sprite; - } - /// - /// 查找身体部件的所有Sprite变体(支持带编号的图片) - /// - /// 包名 - /// 文件路径 - /// 身体部件名 - /// 按编号排序的Sprite数组,未找到时返回空数组 - public Sprite[] FindBodyTextures(string packageName, string filePath, string bodyPartName) - { - // 检查包名是否存在 - if (!bodyTexture.TryGetValue(packageName, out var packageDict)) - { - Debug.LogWarning($"Package '{packageName}' not found."); - return new[] { defaultSprite }; - } - - // 检查文件路径是否存在 - if (!packageDict.TryGetValue(filePath, out var pathDict)) - { - Debug.LogWarning($"File path '{filePath}' not found in package '{packageName}'."); - return new[] { defaultSprite }; - } - - // 收集所有匹配的Sprite - var sprites = new List<(int order, Sprite sprite)>(); - - // 查找完全匹配的项(无编号) - if (pathDict.TryGetValue(bodyPartName, out var baseSprite)) - { - sprites.Add((0, baseSprite)); - } - - // 查找带编号的变体 - var prefix = bodyPartName + "_"; - foreach (var (key, value) in pathDict) - { - // 检查是否以部件名+下划线开头 - if (key.StartsWith(prefix) && key.Length > prefix.Length) - { - var suffix = key.Substring(prefix.Length); - - // 尝试解析编号 - if (int.TryParse(suffix, out var number)) - { - sprites.Add((number, value)); - } - } - } - - // 按编号排序(无编号视为0) - return sprites - .OrderBy(x => x.order) - .Select(x => x.sprite) - .ToArray(); - } } -} \ No newline at end of file +} diff --git a/Client/Assets/Scripts/Managers/TileManager.cs b/Client/Assets/Scripts/Managers/TileManager.cs index b11b93c..98ffdec 100644 --- a/Client/Assets/Scripts/Managers/TileManager.cs +++ b/Client/Assets/Scripts/Managers/TileManager.cs @@ -2,121 +2,176 @@ using System.Collections.Generic; using Data; using UnityEngine; using UnityEngine.Tilemaps; +using Utils; namespace Managers { /// /// 瓦片管理器,用于加载、初始化和管理瓦片资源。 /// - public class TileManager : Utils.Singleton + /// + /// 实现 接口,以便由 Launcher 统一管理生命周期。 + /// + public class TileManager : Singleton, ILaunchManager { - /// - /// 存储瓦片名称与瓦片对象的映射关系。 - /// - public Dictionary tileBaseMapping = new(); + // ------------- ILaunchManager 接口实现 ------------- /// - /// 存储瓦片索引与瓦片对象的映射关系。 - /// 索引由四个整数组成,表示瓦片的组合方式。 + /// 获取当前瓦片管理器加载步骤的描述。 /// - public Dictionary<(int, int, int, int), TileBase> tileToTileBaseMapping = new(); - - /// - /// 存储瓦片名称与唯一 ID 的映射关系。 - /// - public Dictionary tileID = new(); + public string StepDescription => "正在切割瓦片"; /// /// 初始化瓦片管理器。 - /// 加载所有瓦片定义、纹理映射表,并生成对应的瓦片对象。 /// + /// + /// 加载所有瓦片定义、纹理映射表,并生成对应的瓦片对象。 + /// 此方法是幂等的,多次调用只会在第一次执行实际初始化逻辑。 + /// public void Init() { + // 如果已经被初始化,则直接返回 if (tileToTileBaseMapping.Count > 0) + { return; - - // 初始化图像包管理器 - Managers.PackagesImageManager.Instance.Init(); - var imagePack = Managers.PackagesImageManager.Instance; - - // 获取所有瓦片定义 - var tileType = Managers.DefineManager.Instance.QueryDefinesByType(); - for (var i = 0; i < tileType.Length; i++) - { - tileID.Add(tileType[i].name, i); } - - // 处理瓦片纹理映射表定义 - var tileTextureMappingDef = Managers.DefineManager.Instance.QueryDefinesByType(); - foreach (var mappingTableDef in tileTextureMappingDef) + + // 确保依赖的 PackagesImageManager 已初始化。 + // 虽然 Launcher 会按顺序初始化,但这里做一次检查和调用, + // 可以防止其他地方直接调用 TileManager.Instance.Init() 时, + // 其依赖未准备好的情况。PackagesImageManager 也应该是幂等的。 + PackagesImageManager.Instance.Init(); + + var imagePack = Managers.PackagesImageManager.Instance; + + // 获取所有瓦片定义 + var tileDefs = DefineManager.Instance.QueryDefinesByType(); + for (var i = 0; i < tileDefs.Length; i++) { + // 使用 TryAdd 避免重复添加,并处理潜在的定义冲突 + if (!tileID.TryAdd(tileDefs[i].name, i)) + { + Debug.LogWarning($"瓦片定义 '{tileDefs[i].name}' 的名称重复。 将忽略后续定义。"); + } + } + + // 处理瓦片纹理映射表定义 + var tileTextureMappingDefs = DefineManager.Instance.QueryDefinesByType(); + foreach (var mappingTableDef in tileTextureMappingDefs) + { + var packName = DefineManager.Instance.GetDefinePackageName(mappingTableDef); foreach (var keyVal in mappingTableDef.tileDict) { - var key = keyVal.Key; - var val = keyVal.Value; - - // 检查键值格式是否合法 - var parts = key.Split('_'); + var compositeKey = keyVal.Key; // 例如 "Dirt_Grass_Dirt_Dirt" + var spriteName = keyVal.Value; // 例如 "Dirt_Sprite_001" + var parts = compositeKey.Split('_'); if (parts.Length != 4) { - var packName = Managers.DefineManager.Instance.GetDefinePackageName(mappingTableDef); - Debug.LogError($"来自{packName}定义的TileMappingTableDef键值{key}内容不合法!\n应该为[瓦片名称_瓦片名称_瓦片名称_瓦片名称]的格式"); + Debug.LogError($"来自 '{packName}' 定义的 TileMappingTableDef 键值 '{compositeKey}' 格式不合法!\n应为 '[瓦片名称_瓦片名称_瓦片名称_瓦片名称]' 的格式。"); continue; } - - // 检查键值中是否存在未定义的瓦片名称 - if (!(tileID.TryGetValue(parts[0], out var k1) && - tileID.TryGetValue(parts[1], out var k2) && - tileID.TryGetValue(parts[2], out var k3) && - tileID.TryGetValue(parts[3], out var k4))) + // 尝试获取四个部分的瓦片ID + if (!tileID.TryGetValue(parts[0], out var k1) || + !tileID.TryGetValue(parts[1], out var k2) || + !tileID.TryGetValue(parts[2], out var k3) || + !tileID.TryGetValue(parts[3], out var k4)) { - var packName = Managers.DefineManager.Instance.GetDefinePackageName(mappingTableDef); - Debug.LogError($"来自{packName}定义的TileMappingTableDef键值{key}中存在未定义的瓦片名称"); + Debug.LogError($"来自 '{packName}' 定义的 TileMappingTableDef 键值 '{compositeKey}' 中存在未定义的瓦片名称。"); continue; } - // 获取对应精灵 - var sprite = imagePack.GetSprite(mappingTableDef.packID, val); + var sprite = imagePack.GetSprite(mappingTableDef.packID, spriteName); if (sprite == null) { - var packName = Managers.DefineManager.Instance.GetDefinePackageName(mappingTableDef); - Debug.LogError($"来自{packName}定义的TileMappingTableDef键值{val}中存在未定义的图片名称"); + Debug.LogError($"来自 '{packName}' 定义的 TileMappingTableDef 键值 '{spriteName}' 中存在未定义的图片名称。"); continue; } - + var tileKey = (k1, k2, k3, k4); // 检查是否存在重复索引 - if (tileToTileBaseMapping.ContainsKey((k1, k2, k3, k4))) + if (tileToTileBaseMapping.ContainsKey(tileKey)) { - var packName = Managers.DefineManager.Instance.GetDefinePackageName(mappingTableDef); - Debug.LogWarning($"来自{packName}定义的TileMappingTableDef键值{(k1, k2, k3, k4)}存在重复索引,将忽略重复项"); + Debug.LogWarning($"来自 '{packName}' 定义的 TileMappingTableDef 键值 '{tileKey}' (对应原始键 '{compositeKey}') 存在重复索引,将忽略重复项。"); continue; } - - // 加载瓦片并存储到映射表中 - var tile = LoadTile(sprite); - tileToTileBaseMapping[(k1, k2, k3, k4)] = tile; - tileBaseMapping[val] = tile; + // 创建瓦片实例并存储到映射表中 + var newTile = CreateTileInstance(sprite); + tileToTileBaseMapping[tileKey] = newTile; + + // 同样检查 tileBaseMapping 的重复性 + if (tileBaseMapping.ContainsKey(spriteName)) + { + Debug.LogWarning($"来自 '{packName}' 定义的 TileMappingTableDef 键值 '{spriteName}' 在 tileBaseMapping 中存在重复。 仅保留第一个实例。"); + } + else + { + tileBaseMapping[spriteName] = newTile; + } } } } /// - /// 重新加载瓦片管理器。 - /// 清空当前的瓦片映射表并重新初始化。 + /// 清理瓦片管理器,释放所有加载的瓦片资源和数据。 /// - public void Reload() + /// + /// 用于重载游戏时彻底重置瓦片系统。 + /// + public void Clear() { + // 销毁所有动态创建的 Tile ScriptableObject + foreach (var tileBase in tileToTileBaseMapping.Values) + { + if (tileBase is Tile tile) // 确认是 Unity.Tilemap.Tile 类型 + { + // 在运行时,直接 Destroy 会导致一些警告,但对于动态创建的 ScriptableObject, + // 这是清理内存的正确方法。如果此方法在编辑器模式且不在Play模式下调用, + // 应该使用 DestroyImmediate。考虑到此方法通常由 Launcher 在Play模式下调用, + // Destroy 即可。 + Object.Destroy(tile); + } + } + foreach (var tileBase in tileBaseMapping.Values) + { + if (tileBase is Tile tile && !tileToTileBaseMapping.ContainsValue(tile)) + { + // 销毁可能在 tileBaseMapping 中但不在 tileToTileBaseMapping 中的额外 Tile 实例 + // (尽管根据 Init 逻辑,它们应该是指向相同的实例) + Object.Destroy(tile); + } + } + + tileBaseMapping.Clear(); tileToTileBaseMapping.Clear(); - Init(); + tileID.Clear(); } + // ------------- ILaunchManager 接口实现结束 ------------- + + /// + /// 存储瓦片名称与 对象的映射关系。 + /// + public Dictionary tileBaseMapping = new(); + + /// + /// 存储瓦片组合索引与 对象的映射关系。 + /// 索引由四个整数组成,表示瓦片的组合方式。 + /// + public Dictionary<(int, int, int, int), TileBase> tileToTileBaseMapping = new(); + + /// + /// 存储瓦片名称与唯一 ID 的映射关系。 + /// + public Dictionary tileID = new(); + + // 移除了 TileManager 内部的 Reload() 方法,因为它将被 Launcher 的 Clear() + Init() 流程取代。 /// - /// 将精灵加载为瓦片对象。 + /// 将精灵加载为新的 ScriptableObject 实例。 + /// 这是一个内部辅助方法。 /// - /// 要加载的精灵。 - /// 瓦片的碰撞体类型,默认为 None。 - /// 返回加载成功的瓦片对象。 - public TileBase LoadTile(Sprite sprite, Tile.ColliderType colliderType = Tile.ColliderType.None) + /// 要加载为瓦片的精灵。 + /// 瓦片的碰撞体类型,默认为 。 + /// 返回新创建的 对象。 + private TileBase CreateTileInstance(Sprite sprite, Tile.ColliderType colliderType = Tile.ColliderType.None) { var newTile = ScriptableObject.CreateInstance(); newTile.sprite = sprite; @@ -124,5 +179,27 @@ namespace Managers newTile.colliderType = colliderType; return newTile; } + + /// + /// 获取指定组合索引的瓦片对象。 + /// + /// 由四个整数组成的瓦片组合索引。 + /// 对应的 对象,如果不存在则返回 null。 + public TileBase GetTile((int, int, int, int) tileKey) + { + tileToTileBaseMapping.TryGetValue(tileKey, out var tile); + return tile; + } + + /// + /// 获取指定精灵名称的瓦片对象。 + /// + /// 精灵的名称。 + /// 对应的 对象,如果不存在则返回 null。 + public TileBase GetTileBySpriteName(string spriteName) + { + tileBaseMapping.TryGetValue(spriteName, out var tile); + return tile; + } } -} \ No newline at end of file +} diff --git a/Client/Assets/Scripts/Map/Dimension.cs b/Client/Assets/Scripts/Map/Dimension.cs new file mode 100644 index 0000000..eafa466 --- /dev/null +++ b/Client/Assets/Scripts/Map/Dimension.cs @@ -0,0 +1,90 @@ +using System; +using Managers; +using UnityEngine; + +namespace Map +{ + /// + /// 表示游戏中的一个维度或场景区域。 + /// 实体管理器将根据此维度来组织和管理实体。 + /// + public class Dimension : MonoBehaviour + { + [SerializeField] private bool defaultOpen = false; + + [SerializeField] [Tooltip("此维度的唯一标识符。如果为空,将使用GameObject的名称。")] + private string _dimensionId; + + [SerializeField] public MapGenerator mapGenerator; + + public Vector3 cameraPosition; + /// + /// 获取此维度的唯一标识符。 + /// + public string DimensionId + { + get + { + if (string.IsNullOrEmpty(_dimensionId)) + { + _dimensionId = gameObject.name; // 如果未设置,默认使用GameObject名称 + } + + return _dimensionId; + } + // 内部设置器,允许在Awake中初始化或编辑器中赋值 + private set => _dimensionId = value; + } + + /// + /// 此维度下所有实体的根Transform。用于组织场景层级。 + /// + public Transform DimensionRoot { get; private set; } + + private void Awake() + { + + // 1. 确保 DimensionId 已初始化,这会触发 DimensionId 属性的 getter 逻辑 + var id = DimensionId; + // 2. 创建一个用于存放此维度下所有实体的根GameObject,方便管理 + var rootObj = new GameObject($"_Entities_{id}"); + rootObj.transform.SetParent(this.transform); // 将其作为Dimension对象的子对象 + DimensionRoot = rootObj.transform; + // 3. 注册此维度到 Program + if (Program.Instance != null) // 检查单例是否仍然存在 + { + Program.Instance.RegisterDimension(this); + } + else + { + Debug.LogError( + "[Dimension] Program.Instance is null during Dimension Awake. Cannot register dimension.", this); + } + + + // 5. 处理 defaultOpen 逻辑,设置Program的焦点维度 + // 确保在自身注册到 Program 之后再设置焦点,这样 Program 内部才能找到它 + if (defaultOpen && Program.Instance != null) + { + Program.Instance.SetFocusedDimension(_dimensionId); + } + + } + + private void Start() + { + var size = mapGenerator.baseMap.GetSize(); + cameraPosition = new Vector3(size.x / 2f, size.y / 2f, -10)+transform.position; + } + + private void OnDestroy() + { + // 当 Dimension 对象被销毁时(例如,场景卸载),从 Program 和 EntityManage 注销 + if (Program.Instance != null) // 检查单例是否仍然存在 + { + Program.Instance.UnregisterDimension(this); + } + } + } + +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Map/Dimension.cs.meta b/Client/Assets/Scripts/Map/Dimension.cs.meta new file mode 100644 index 0000000..832045f --- /dev/null +++ b/Client/Assets/Scripts/Map/Dimension.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1cf2b22a0f934c5b852b5cdd588d82fa +timeCreated: 1756014704 \ No newline at end of file diff --git a/Client/Assets/Scripts/Map/DoubleMap.cs b/Client/Assets/Scripts/Map/DoubleMap.cs index 763e3a3..a26d734 100644 --- a/Client/Assets/Scripts/Map/DoubleMap.cs +++ b/Client/Assets/Scripts/Map/DoubleMap.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using Data; @@ -9,23 +10,27 @@ namespace Map { public class DoubleMap : MonoBehaviour { - public List> mapData = new List>(); + public List> mapData = new(); public Tilemap textureLevel; - public Vector2Int dataOffset = Vector2Int.zero; // 数据起始点偏移变量 + // public Vector2Int dataOffset = Vector2Int.zero; // 数据起始点偏移变量 - 已删除 + + // 初始化地图数据大小 public void InitializeData(int width, int height, int defaultValue = 0) { mapData.Clear(); - for (int x = 0; x < width; x++) + for (var x = 0; x < width; x++) { - List column = new List(); - for (int y = 0; y < height; y++) + var column = new List(); + for (var y = 0; y < height; y++) { column.Add(defaultValue); } + mapData.Add(column); } } + // 设置指定数据坐标的瓦片值并刷新相关瓦片 public void SetTile(int dataX, int dataY, int value) { @@ -59,7 +64,7 @@ namespace Map public void RefreshTile(int dataX, int dataY) { // 计算该数据点影响的四个瓦片位置(该点作为四个角) - Vector2Int[] affectedTiles = new Vector2Int[] + var affectedTiles = new Vector2Int[] { new Vector2Int(dataX - 1, dataY - 1), // 作为右下角 new Vector2Int(dataX - 1, dataY), // 作为右上角 @@ -79,15 +84,15 @@ namespace Map if (mapData.Count == 0 || mapData[0].Count == 0) return; // 计算瓦片地图的有效范围(考虑偏移) - int startX = dataOffset.x; - int startY = dataOffset.y; - int endX = startX + mapData.Count - 1; - int endY = startY + mapData[0].Count - 1; + var startX = 0; // dataOffset.x 已删除 + var startY = 0; // dataOffset.y 已删除 + var endX = startX + mapData.Count - 1; + var endY = startY + mapData[0].Count - 1; // 遍历所有瓦片位置 - for (int x = startX; x <= endX; x++) + for (var x = startX; x <= endX; x++) { - for (int y = startY; y <= endY; y++) + for (var y = startY; y <= endY; y++) { UpdateTileAtTilemapPosition(x, y); } @@ -98,30 +103,30 @@ namespace Map private void UpdateTileAtTilemapPosition(int tileX, int tileY) { // 计算对应的数据坐标(考虑偏移) - int dataX = tileX - dataOffset.x; - int dataY = tileY - dataOffset.y; + var dataX = tileX; // - dataOffset.x 已删除 + var dataY = tileY; // - dataOffset.y 已删除 // 获取四个角的数据坐标 - int topLeftX = dataX; - int topLeftY = dataY; - int topRightX = dataX + 1; - int topRightY = dataY; - int bottomLeftX = dataX; - int bottomLeftY = dataY + 1; - int bottomRightX = dataX + 1; - int bottomRightY = dataY + 1; + var topLeftX = dataX; + var topLeftY = dataY + 1; + var topRightX = dataX + 1; + var topRightY = dataY + 1; + var bottomLeftX = dataX; + var bottomLeftY = dataY; + var bottomRightX = dataX + 1; + var bottomRightY = dataY; // 检查边界并获取值 - int topLeft = GetDataValue(topLeftX, topLeftY); - int topRight = GetDataValue(topRightX, topRightY); - int bottomLeft = GetDataValue(bottomLeftX, bottomLeftY); - int bottomRight = GetDataValue(bottomRightX, bottomRightY); + var topLeft = GetDataValue(topLeftX, topLeftY); + var topRight = GetDataValue(topRightX, topRightY); + var bottomLeft = GetDataValue(bottomLeftX, bottomLeftY); + var bottomRight = GetDataValue(bottomRightX, bottomRightY); // 获取对应的瓦片 - TileBase tile = GetTileFromManager(topLeft, topRight, bottomLeft, bottomRight); + var tile = GetTileFromManager(topLeft, topRight, bottomLeft, bottomRight); // 设置到瓦片地图 - Vector3Int position = new Vector3Int(tileX, tileY, 0); + var position = new Vector3Int(tileX, tileY, 0); textureLevel.SetTile(position, tile); } @@ -136,7 +141,7 @@ namespace Map // 从TileManager获取对应瓦片 private TileBase GetTileFromManager(int topLeft, int topRight, int bottomLeft, int bottomRight) { - TileManager manager = TileManager.Instance; + var manager = TileManager.Instance; if (manager == null) { Debug.LogError("TileManager实例未找到"); @@ -145,13 +150,13 @@ namespace Map // 尝试获取组合键对应的瓦片 var key = (topLeft, topRight, bottomLeft, bottomRight); - if (manager.tileToTileBaseMapping.TryGetValue(key, out TileBase tile)) + if (manager.tileToTileBaseMapping.TryGetValue(key, out var tile)) { return tile; } // 备用方案:尝试获取默认瓦片 - if (manager.tileBaseMapping.TryGetValue("Default", out TileBase defaultTile)) + if (manager.tileBaseMapping.TryGetValue("Default", out var defaultTile)) { return defaultTile; } @@ -159,5 +164,16 @@ namespace Map Debug.LogError($"未找到对应瓦片: {key}"); return null; } + + public Vector2Int GetSize() + { + if (!mapData.Any() || mapData[0].Count == 0) + { + return new Vector2Int(0, 0); + } + + return new Vector2Int(mapData.Count, mapData[0].Count); + } } + } diff --git a/Client/Assets/Scripts/Map/MapGenerator.cs b/Client/Assets/Scripts/Map/MapGenerator.cs index 065b245..84dca95 100644 --- a/Client/Assets/Scripts/Map/MapGenerator.cs +++ b/Client/Assets/Scripts/Map/MapGenerator.cs @@ -4,37 +4,31 @@ using UnityEngine.Tilemaps; namespace Map { - public class MapGenerator:Utils.MonoSingleton + public class MapGenerator:MonoBehaviour { - public DoubleMap baseLevel; - public Tilemap buildLevel; - public Tilemap plantLevel; + public DoubleMap baseMap; + + private void Awake() + { + Managers.DefineManager.Instance.Init(); + Managers.PackagesImageManager.Instance.Init(); + Managers.TileManager.Instance.Init(); + + var size = 100; + baseMap.InitializeData(size, size); + for (var i = 0; i < size; i++) + { + for (var j = 0; j < size; j++) + { + var dx = i - size / 2; + var dy = j - size / 2; + baseMap.mapData[i][j] = (int)(Math.Sqrt(dx * dx + dy * dy) / 5) & 1; + } + } + + baseMap.RefreshAllTiles(); + CameraControl.CameraControl.Instance.SetPosition(new Vector3(size * 0.5f, size * 0.5f, -10)); + } - public void Start() - { - var perline= Utils.PerlinNoise.Instance; - int size = 100; - baseLevel.InitializeData(size, size); - baseLevel.RefreshAllTiles(); - } - - public bool CanPassThrough(int x, int y) - { - return GetTilePassCost(x, y) < 1; - } - public float GetTilePassCost(int x, int y) - { - return 0; - } - - public float GetTileBulletCover(int x, int y) - { - return 0; - } - - protected override void OnStart() - { - - } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Map/MiniMap.cs b/Client/Assets/Scripts/Map/MiniMap.cs new file mode 100644 index 0000000..118d0b8 --- /dev/null +++ b/Client/Assets/Scripts/Map/MiniMap.cs @@ -0,0 +1,24 @@ +using Base; +using UnityEngine; +using UnityEngine.UI; + +namespace Map +{ + public class MiniMap : MonoBehaviour,ITickUI + { + public Image background; + public RawImage texture; + private bool _show = true; + + + public void TickUI() + { + if (_show != Setting.Instance.CurrentSettings.showMiniMap) + { + _show = Setting.Instance.CurrentSettings.showMiniMap; + texture.gameObject.SetActive(_show); + background.enabled = _show; + } + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Map/MiniMap.cs.meta b/Client/Assets/Scripts/Map/MiniMap.cs.meta new file mode 100644 index 0000000..c7aedfa --- /dev/null +++ b/Client/Assets/Scripts/Map/MiniMap.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: feb227be5c204aaea27e09f754dc05b8 +timeCreated: 1756172116 \ No newline at end of file diff --git a/Client/Assets/Scripts/Prefab/EntityPrefab.cs b/Client/Assets/Scripts/Prefab/EntityPrefab.cs index 2a73146..a74b3ab 100644 --- a/Client/Assets/Scripts/Prefab/EntityPrefab.cs +++ b/Client/Assets/Scripts/Prefab/EntityPrefab.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using AI; using Base; @@ -37,11 +38,17 @@ namespace Prefab public void DefaultInit() { var animator = GetComponentsInChildren(); - ITick[] inf = animator; - entity.bodyAnimationNode.Add(Orientation.Down,inf.ToList()); - entity.bodyAnimationNode.Add(Orientation.Up,inf.ToList()); - entity.bodyAnimationNode.Add(Orientation.Left,inf.ToList()); - entity.bodyAnimationNode.Add(Orientation.Right,inf.ToList()); + var inf = animator.Cast().ToArray(); + foreach (EntityState state in Enum.GetValues(typeof(EntityState))) + { + var orientationDict = new Dictionary(); + foreach (Orientation orientation in Enum.GetValues(typeof(Orientation))) + { + orientationDict[orientation] = inf; // 所有值都指向同一个列表 + } + entity.bodyAnimationNode[state] = orientationDict; + } + outline.Init(); outline.Hide(); } diff --git a/Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs b/Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs new file mode 100644 index 0000000..48fb602 --- /dev/null +++ b/Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs @@ -0,0 +1,43 @@ +using System; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace Prefab +{ + // [RequireComponent(typeof(CircleCollider2D))] + public class HoverButtonPrefab:MonoBehaviour + { + public TMP_Text text; + public Button button; + // public CircleCollider2D circleCollider; + + public float startRadius = 250; + public float endRadius = 100; + + + private void Start() + { + // circleCollider.radius=startRadius; + } + + public void OnMouseOver() + { + var dir= (Input.mousePosition - transform.position).magnitude; + + var color = button.image.color; + color.a = Mathf.Min((startRadius - dir) / (startRadius - endRadius), 1); + button.image.color = color; + } + + public void OnMouseEnter() + { + button.gameObject.SetActive(true); + } + + public void OnMouseExit() + { + button.gameObject.SetActive(false); + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs.meta b/Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs.meta new file mode 100644 index 0000000..d758c30 --- /dev/null +++ b/Client/Assets/Scripts/Prefab/HoverButtonPrefab.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cda5c2669c504f77bb60cdd9ce591e63 +timeCreated: 1755663454 \ No newline at end of file diff --git a/Client/Assets/Scripts/Prefab/SpriteAnimator.cs b/Client/Assets/Scripts/Prefab/SpriteAnimator.cs index 023f4de..9e3bef9 100644 --- a/Client/Assets/Scripts/Prefab/SpriteAnimator.cs +++ b/Client/Assets/Scripts/Prefab/SpriteAnimator.cs @@ -1,3 +1,4 @@ +using System; using Base; using UnityEngine; @@ -64,7 +65,7 @@ namespace Prefab // 更新帧计时器 _frameTimer += deltaTime; - float frameDuration = 1f / _fps; + var frameDuration = 1f / _fps; // 检查帧切换条件 while (_frameTimer >= frameDuration) @@ -101,6 +102,13 @@ namespace Prefab // 重置帧计时器,以确保从头开始播放 _frameTimer = 0f; } + + public void Restore() + { + _currentFrameIndex = 0; + _renderer.sprite = _sprites[_currentFrameIndex]; + } + public void SetFPS(float newFPS) => _fps = Mathf.Max(0.1f, newFPS); public void SetStaticSprite(Sprite sprite) => _staticSprite = sprite; } diff --git a/Client/Assets/Scripts/Program.cs b/Client/Assets/Scripts/Program.cs index 7c36282..b0d688f 100644 --- a/Client/Assets/Scripts/Program.cs +++ b/Client/Assets/Scripts/Program.cs @@ -1,18 +1,212 @@ -using Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using Map; using UnityEngine; +using Utils; -public class Program : MonoBehaviour +/// +/// Program 类作为单例模式的核心管理器,负责维护和管理游戏或应用中的维度(Dimension)实例和焦点状态。 +/// 它提供了维度注册、注销、获取以及焦点维度设置的功能。 +/// +public class Program : Singleton { - private void Awake() + /// + /// 指示是否需要加载数据的标志,例如在游戏启动或场景切换时。 + /// + public bool needLoad = true; + + /// + /// 当前聚焦的实体对象。 + /// 变更为属性,并私有化setter,确保通过 SetFocusedEntity 方法集中管理其更新和事件触发。 + /// + public Entity.Entity FocusedEntity { get; private set; } = null; + + /// + /// 当焦点实体发生变化时触发的事件。 + /// 事件参数为新的焦点 Entity 实例,如果焦点被清除则为 null。 + /// + public event Action OnFocusedEntityChanged; + + /// + /// 当前活跃焦点的维度唯一标识符,可能为空。 + /// 变更为属性,并私有化setter,确保通过 SetFocusedDimension 方法集中管理其更新。 + /// + // 逻辑修改1:修正属性名 'focuseDimensionId' 为 'focusedDimensionId' + public string FocusedDimensionId { get; private set; } = null; + + /// + /// 当前聚焦的维度对象实例。当 不为空时,此属性指向对应的维度实例。 + /// + public Dimension FocusedDimension { get; private set; } + + /// + /// 维护所有已注册的维度实例的字典,键是维度的唯一标识符 (ID)。 + /// + private readonly Dictionary _registeredDimensions = new Dictionary(); + + /// + /// 获取所有已注册的维度。返回一个只读字典副本,防止外部直接修改。 + /// + public IReadOnlyDictionary RegisteredDimensions => _registeredDimensions; + + /// + /// 当焦点维度发生变化时触发的事件。 + /// 事件参数为新的焦点 Dimension 实例,如果焦点被清除则为 null。 + /// + public event Action OnFocusedDimensionChanged; + + public int DimensionCount => _registeredDimensions.Count; + public string[] Dimensions => _registeredDimensions.Keys.ToArray(); + + /// + /// 注册一个维度实例到 Program。 + /// + /// 要注册的维度实例。 + public void RegisterDimension(Dimension dimension) { - UnityLogger.Init(); - Managers.DefineManager.Instance.Init(); - Managers.PackagesImageManager.Instance.Init(); - Managers.TileManager.Instance.Init(); + if (dimension == null) + { + Debug.LogError("[Program] Attempted to register a null Dimension."); + return; + } + var id = dimension.DimensionId; + if (string.IsNullOrEmpty(id)) + { + Debug.LogError($"[Program] Attempted to register a Dimension with an empty or null ID: {dimension.name}"); + return; + } + if (_registeredDimensions.ContainsKey(id)) + { + Debug.LogWarning($"[Program] Dimension with ID '{id}' is already registered. Skipping duplicate registration for {dimension.name}."); + return; + } + _registeredDimensions.Add(id, dimension); + + // 逻辑修改:此处不需要if语句包裹_registeredDimensions.Add,因为前置的ContainsKey已确保不会抛异常。 + // 确保任何对焦点的潜在更新都通过 SetFocusedDimension 进行, + // 从而集中管理焦点状态的同步和事件的触发。 + // 如果注册的维度恰好是当前 focusedDimensionId, SetFocusedDimension(id) 将负责更新 FocusedDimension 并触发事件。 + // 并且,由于SetFocusedDimension会清空FocusedEntity,这也符合新维度的行为。 + // 逻辑修改1:修正属性名 'focuseDimensionId' 为 'focusedDimensionId' + if (FocusedDimensionId == id) + { + SetFocusedDimension(id); + } } - private void Start() + /// + /// 从 Program 注销一个维度实例。 + /// + /// 要注销的维度实例。 + public void UnregisterDimension(Dimension dimension) { - Debug.Log("Starting game..."); + if (dimension == null) + { + Debug.LogWarning("[Program] Attempted to unregister a null Dimension. Skipping."); + return; + } + var id = dimension.DimensionId; + if (_registeredDimensions.Remove(id)) + { + // 确保任何对焦点的潜在更新都通过 SetFocusedDimension 进行, + // 从而集中管理焦点状态的同步和事件的触发。 + // 如果注销的维度是当前焦点维度,则调用 SetFocusedDimension(null) 清除焦点并触发事件。 + // 逻辑修改1:修正属性名 'focuseDimensionId' 为 'focusedDimensionId' + if (FocusedDimensionId == id) + { + SetFocusedDimension(null); // 清除焦点 + } + } + else + { + Debug.LogWarning($"[Program] Attempted to unregister Dimension '{id}' which was not found in the registered list."); + } } -} \ No newline at end of file + + /// + /// 根据ID获取一个已注册的维度。 + /// + /// 维度的唯一标识符。 + /// 对应的Dimension实例,如果未找到则返回null。 + public Dimension GetDimension(string dimensionId) + { + _registeredDimensions.TryGetValue(dimensionId, out var dimension); + return dimension; + } + + /// + /// 设置当前聚焦的维度。 + /// 这是更改焦点维度的唯一官方入口。 + /// + /// 要设置为焦点的维度的唯一标识符。如果传入null或空字符串,将清除当前焦点维度。 + public void SetFocusedDimension(string dimensionId) + { + // 1. 确定新的焦点维度及其ID + Dimension newFocusedDimension = null; // 默认为清除焦点 + string newFocusedDimensionId = null; // 逻辑修改1:修正属性名 'newFocuseDimensionId' 为 'newFocusedDimensionId' + + if (!string.IsNullOrEmpty(dimensionId)) + { + if (_registeredDimensions.TryGetValue(dimensionId, out var foundDimension)) + { + newFocusedDimensionId = dimensionId; // 逻辑修改1:修正属性名 + newFocusedDimension = foundDimension; + } + else + { + // 如果尝试设置未注册的维度,警告并直接返回,不改变当前焦点状态。 + Debug.LogWarning($"[Program] Attempted to set focus to unregistered dimension ID: '{dimensionId}'. Focus not changed."); + return; + } + } + // 如果 dimensionId 为 null 或空, newFocusedDimension 和 newFocusedDimensionId 将保持为 null,表示清除焦点。 + + // 2. 优化:检查是否实际发生变化,避免不必要的更新和事件触发 + // 只有当新的ID或新的维度对象引用与当前的不一致时,才执行更新。 + // 逻辑修改1:修正属性名 'focuseDimensionId' 为 'focusedDimensionId' + // 逻辑修改1:修正局部变量名 'newFocuseDimensionId' 为 'newFocusedDimensionId' + if (FocusedDimensionId == newFocusedDimensionId && FocusedDimension == newFocusedDimension) + { + // Debug.Log($"[Program] SetFocusedDimension: ID '{dimensionId}' already current. No change needed."); + return; + } + + if (FocusedEntity != null) + { + FocusedEntity.PlayerControlled = false; + } + // 3. 更新内部状态 + FocusedDimensionId = newFocusedDimensionId; // 逻辑修改1:修正属性名 + FocusedDimension = newFocusedDimension; + + // 逻辑修改2:功能缺失修复 - 切换维度时,焦点实体应该置为空 + // 确保功能一致性:当维度焦点改变(或被清除)时,任何实体焦点也应被清除。 + SetFocusedEntity(null); + + // 4. 触发事件 + OnFocusedDimensionChanged?.Invoke(FocusedDimension); + } + + /// + /// 设置当前聚焦的实体。 + /// 这是更改焦点实体的唯一官方入口,并会在实体改变时触发 OnFocusedEntityChanged 事件。 + /// + /// 要设置为焦点的实体实例。如果传入null,将清除当前焦点实体。 + public void SetFocusedEntity(Entity.Entity entity) + { + // 优化:检查是否实际发生变化,避免不必要的更新和事件触发。 + // 如果新的实体与当前焦点实体相同(按引用比较),则不执行任何操作。 + if (FocusedEntity == entity) + { + // Debug.Log($"[Program] SetFocusedEntity: Entity '{entity?.name ?? "null"}' already current. No change needed."); + return; + } + + // 更新内部状态 + FocusedEntity = entity; + + // 触发事件,将新的焦点实体(或 null)作为参数传递。 + OnFocusedEntityChanged?.Invoke(FocusedEntity); + } +} diff --git a/Client/Assets/Scripts/Test/TestDefine.cs b/Client/Assets/Scripts/Test/TestDefine.cs deleted file mode 100644 index 55333bb..0000000 --- a/Client/Assets/Scripts/Test/TestDefine.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using Data; -using Managers; -using UnityEngine; - -namespace Test -{ - - - public class TestDefine : MonoBehaviour - { - public EntityManage entityManager; - void Awake() - { - Managers.DefineManager.Instance.Init(); - - } - - private void Start() - { - var chicken = Managers.DefineManager.Instance.FindDefine("testPawn"); - entityManager.GenerateEntity(chicken,Vector3.zero); - entityManager.GenerateDefaultEntity(Vector3.down); - Debug.Log(chicken); - } - - // Update is called once per frame - void Update() - { - - } - } - -} diff --git a/Client/Assets/Scripts/Test/TestDefine.cs.meta b/Client/Assets/Scripts/Test/TestDefine.cs.meta deleted file mode 100644 index 7d92609..0000000 --- a/Client/Assets/Scripts/Test/TestDefine.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 147e91e6929d90a4fb877c0b0a6b608c \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/BarUI.cs b/Client/Assets/Scripts/UI/BarUI.cs new file mode 100644 index 0000000..ac219a9 --- /dev/null +++ b/Client/Assets/Scripts/UI/BarUI.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace UI +{ + public class BarUI:MonoBehaviour + { + [SerializeField] private Image image; + + public float Progress + { + get => image.fillAmount; + set => image.fillAmount = value; + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/BarUI.cs.meta b/Client/Assets/Scripts/UI/BarUI.cs.meta new file mode 100644 index 0000000..2c59f15 --- /dev/null +++ b/Client/Assets/Scripts/UI/BarUI.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a5026699f3a94f029628af90ccd8fa8d +timeCreated: 1756183343 \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/DevMenuUI.cs b/Client/Assets/Scripts/UI/DevMenuUI.cs index f22aad3..1067495 100644 --- a/Client/Assets/Scripts/UI/DevMenuUI.cs +++ b/Client/Assets/Scripts/UI/DevMenuUI.cs @@ -1,8 +1,7 @@ -using System.Collections.Generic; -using System.Linq; -using Data; +using Base; +using Data; // 确保 Data 命名空间包含 DefBase, CharacterDef, MonsterDef, BuildingDef, ItemDef, EventDef using UnityEngine; -using UnityEngine.UI; +using UnityEngine.SceneManagement; namespace UI { @@ -22,96 +21,117 @@ namespace UI private void Init() { + InitReloadGameButton(); InitEvent(); InitCharacter(); InitMonster(); InitBuilding(); + InitItem(); + InitWeapon(); } + private void InitReloadGameButton() + { + var button = InstantiatePrefab(buttonTemplate, menuContent.transform); + button.Label = "热重载Def"; + button.AddListener(HotReload); + } + + /// + /// 通用的初始化定义按钮的方法。 + /// + /// 定义的类型,必须继承自 Data.DefBase。 + /// 菜单部分的标题。 + /// 当没有定义时显示的提示信息。 + /// 用于从 TDef 获取按钮显示文本的函数。 + /// 点击按钮时执行的动作,传入对应的 TDef 对象。 + private void InitDefineButtons(string titleLabel, string noDefMessage, System.Func buttonTextSelector, System.Action buttonAction) where TDef : Define + { + var title = InstantiatePrefab(textTemplate, menuContent.transform); + title.Label = titleLabel; + + var defList = Managers.DefineManager.Instance.QueryNamedDefinesByType(); + if (defList == null || defList.Length == 0) + { + var noDefTitle = InstantiatePrefab(textTemplate, menuContent.transform); + noDefTitle.Label = noDefMessage; + noDefTitle.text.color = Color.red; + } + else + { + foreach (var def in defList) + { + var button = InstantiatePrefab(buttonTemplate, menuContent.transform); + button.Label = buttonTextSelector(def); + // 确保 lambda 捕获的是循环当前迭代的 def 变量,而不是循环变量本身 + var currentDef = def; + button.AddListener(() => buttonAction(currentDef)); + } + } + } private void InitEvent() { - var title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "事件菜单"; - - title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "未定义任何事件"; - title.text.color = Color.red; - // for (int i = 0; i < 30; i++) - // { - // var button= InstantiatePrefab(buttonTemplate, menuContent.transform); - // button.text.text = i.ToString(); - // } - + // 假设存在 Data.EventDef 类型,且它继承自 Data.DefBase,并包含一个可作为标签的字段。 + // 如果事件触发逻辑不同于生成实体,需要在此处定义相应的回调。 + InitDefineButtons( + "事件菜单", + "未定义任何事件", + // 假设 EventDef 也有 label 字段作为按钮文本 + def => def.label, + eventDef => + { + // TODO: 在这里实现事件触发逻辑 + Debug.Log($"触发事件: {eventDef.label}"); + // 示例: Managers.EventManager.Instance.TriggerEvent(eventDef.id); + }); } private void InitCharacter() { - var title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "生成人物"; - - var defList = Managers.DefineManager.Instance.QueryNamedDefinesByType(); - if (defList == null || defList.Length == 0) - { - title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "未定义任何角色"; - title.text.color = Color.red; - } - else - foreach (var def in defList) - { - var button = InstantiatePrefab(buttonTemplate, menuContent.transform); - button.Label = def.label; - var pawnDef = def; - button.AddListener(() => GenerateEntityCallback(pawnDef)); - } - + InitDefineButtons( + "生成人物", + "未定义任何角色", + def => def.label, + GenerateEntityCallback); } private void InitMonster() { - var title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "生成怪物"; - - var defList = Managers.DefineManager.Instance.QueryNamedDefinesByType(); - if (defList == null || defList.Length == 0) - { - title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "未定义任何怪物"; - title.text.color = Color.red; - } - else - foreach (var def in defList) - { - var button = InstantiatePrefab(buttonTemplate, menuContent.transform); - button.Label = def.label; - var pawnDef = def; - button.AddListener(() => GenerateEntityCallback(pawnDef)); - } + InitDefineButtons( + "生成怪物", + "未定义任何怪物", + def => def.label, + GenerateMonsterEntityCallback); } private void InitBuilding() { - var title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "生成建筑"; - - var defList = Managers.DefineManager.Instance.QueryNamedDefinesByType(); - if (defList == null || defList.Length == 0) - { - title = InstantiatePrefab(textTemplate, menuContent.transform); - title.Label = "未定义任何建筑"; - title.text.color = Color.red; - } - else - foreach (var def in defList) - { - var button = InstantiatePrefab(buttonTemplate, menuContent.transform); - button.Label = def.label; - var pawnDef = def; - button.AddListener(() => GenerateBuildingCallback(pawnDef)); - } + InitDefineButtons( + "生成建筑", + "未定义任何建筑", + def => def.label, + GenerateBuildingCallback); } + private void InitItem() + { + InitDefineButtons( + "生成掉落物", + "未定义任何物品", + def => def.label, + GeneratePickupCallback); + } + private void InitWeapon() + { + InitDefineButtons( + "生成武器", + "未定义任何武器", + def => def.label, + GeneratePickupCallback); + } + + /// /// 通用的实例化函数,返回实例化的预制件脚本组件。 /// @@ -145,23 +165,47 @@ namespace UI { entityPlacementUI.currentAction = () => { - Managers.EntityManage.Instance.GenerateEntity(entityDef, Utils.MousePosition.GetWorldPosition()); + Managers.EntityManage.Instance.GenerateEntity(Program.Instance.FocusedDimensionId,entityDef, Utils.MousePosition.GetWorldPosition()); }; entityPlacementUI.Prompt = $"当前生成器:\n名称:{entityDef.label}\n描述:{entityDef.description}"; entityPlacementUI.snapEnabled = false; - Base.UIInputControl.Instance.Show(entityPlacementUI); + UIInputControl.Instance.Show(entityPlacementUI); + } + private void GenerateMonsterEntityCallback(MonsterDef monsterDef) + { + entityPlacementUI.currentAction = () => + { + Managers.EntityManage.Instance.GenerateMonsterEntity(Program.Instance.FocusedDimensionId,monsterDef, Utils.MousePosition.GetWorldPosition()); + }; + entityPlacementUI.Prompt = $"当前生成器:\n名称:{monsterDef.label}\n描述:{monsterDef.description}"; + entityPlacementUI.snapEnabled = false; + UIInputControl.Instance.Show(entityPlacementUI); } - private void GenerateBuildingCallback(BuildingDef def) { entityPlacementUI.currentAction = () => { - Managers.EntityManage.Instance.GenerateBuildingEntity(def, Utils.MousePosition.GetSnappedWorldPosition()); + Managers.EntityManage.Instance.GenerateBuildingEntity(Program.Instance.FocusedDimensionId,def, Utils.MousePosition.GetSnappedWorldPosition()); }; entityPlacementUI.Prompt = $"当前生成器:\n名称:{def.label}\n描述:{def.description}"; entityPlacementUI.snapEnabled = true; - Base.UIInputControl.Instance.Show(entityPlacementUI); + UIInputControl.Instance.Show(entityPlacementUI); + } + private void GeneratePickupCallback(ItemDef itemDef) + { + entityPlacementUI.currentAction = () => + { + Managers.EntityManage.Instance.GeneratePickupEntity(Program.Instance.FocusedDimensionId,itemDef, Utils.MousePosition.GetWorldPosition()); + }; + entityPlacementUI.Prompt = $"当前生成器:\n名称:{itemDef.label}\n描述:{itemDef.description}"; + entityPlacementUI.snapEnabled = false; + UIInputControl.Instance.Show(entityPlacementUI); + } + private void HotReload() + { + UIInputControl.Instance.HideAll(); + Program.Instance.needLoad = true; + SceneManager.LoadScene(0); } } - } diff --git a/Client/Assets/Scripts/UI/EquipmentUI.cs b/Client/Assets/Scripts/UI/EquipmentUI.cs new file mode 100644 index 0000000..dc38725 --- /dev/null +++ b/Client/Assets/Scripts/UI/EquipmentUI.cs @@ -0,0 +1,275 @@ +using System.Collections.Generic; +using Base; +using Entity; +using UnityEngine; +// 确保 Character 类在此命名空间下 + +namespace UI +{ + /// + /// 负责管理和显示角色的装备用户界面。 + /// 该组件会监听当前关注实体的变化,并根据所关注角色的库存数据动态更新装备槽位的显示, + /// 同时采用对象池技术高效管理 ItemUI 实例的创建和复用。 + /// 除了显示,现在还支持通过滚轮选择物品,并同步更新焦点角色的 CurrentSelected 字段。 + /// + public class EquipmentUI : MonoBehaviour, ITick + { + [SerializeField] + [Tooltip("所有 ItemUI 实例的父级 GameObject,用于布局。")] + private GameObject uiParent; + + [SerializeField] + [Tooltip("用于实例化装备槽位的 ItemUI 预制件。")] + private ItemUI itemUIPrefab; + + /// + /// 当前界面所关联和关注的角色实体。 + /// + private Character focusedEntity; + + /// + /// ItemUI 实例的对象池,用于高效管理和复用 ItemUI。 + /// + private List itemUIPool = new(); + + /// + /// MonoBehaviour 的 Start 生命周期方法。 + /// 在此方法中,注册当游戏主要程序中关注的实体发生变化时,调用 方法进行更新。 + /// + private void Start() + { + Program.Instance.OnFocusedEntityChanged += UpdateFocusedEntity; + uiParent.SetActive(false); + } + + /// + /// MonoBehaviour 的 OnDestroy 生命周期方法。 + /// 在此方法中,取消注册所有已订阅的事件监听器,并清理对象池中创建的所有 ItemUI 实例, + /// 以防止内存泄漏和不必要的引用。 + /// + private void OnDestroy() + { + Program.Instance.OnFocusedEntityChanged -= UpdateFocusedEntity; + + // 如果当前有关注的角色,取消注册其库存改变事件。 + // 确保 focusedEntity 不为 null 且 Inventory 不为 null。 + if (focusedEntity != null && focusedEntity.Inventory != null) + { + focusedEntity.Inventory.OnInventoryChanged -= UpdateUI; + } + + // 销毁对象池中所有 ItemUI 的 GameObject。 + foreach (var itemUI in itemUIPool) + { + if (itemUI != null && itemUI.gameObject != null) + { + Destroy(itemUI.gameObject); + } + } + itemUIPool.Clear(); + } + + /// + /// 当游戏程序中关注的实体发生变化时调用此方法。 + /// 该方法会更新当前 EquipmentUI 所关联的角色,并相应地注册或取消注册库存改变事件。 + /// + /// 新的关注实体,可能为 null 或非 Character 类型。 + private void UpdateFocusedEntity(Entity.Entity entity) + { + // 如果之前有关注的角色,先取消注册其库存改变事件。 + // 确保 focusedEntity 不为 null 且 Inventory 不为 null。 + if (focusedEntity != null && focusedEntity.Inventory != null) + { + focusedEntity.Inventory.OnInventoryChanged -= UpdateUI; + } + + // 尝试将新的实体转换为角色类型。 + Character newCharacter = entity as Character; + if (newCharacter != null) + { + focusedEntity = newCharacter; + } + else + { + // 如果传入的 entity 不是 Character 类型,或者为 null,则清除当前的 focusedEntity。 + focusedEntity = null; + } + + // 如果现在有关注的角色,注册其库存改变事件。 + if (focusedEntity != null) + { + focusedEntity.Inventory.OnInventoryChanged += UpdateUI; + } + + // 立即更新UI以反映新的关注实体(或没有关注实体)的状态。 + UpdateUI(); + + // 在更新UI后,确保UI的选中状态与角色当前选中字段同步 + // 只有当有焦点角色且库存不为空时才更新选中状态 + if (focusedEntity != null && focusedEntity.Inventory != null && focusedEntity.Inventory.Capacity > 0) + { + // 确保 CurrentSelected 在有效范围内,否则重置为0 + if (focusedEntity.CurrentSelected < 0 || focusedEntity.CurrentSelected >= focusedEntity.Inventory.Capacity) + { + focusedEntity.CurrentSelected = 0; + } + UpdateSelectionUI(focusedEntity.CurrentSelected); + } + else + { + // 如果没有焦点实体或库存为空,则清空所有选中状态 + UpdateSelectionUI(-1); // 传入一个无效索引以取消所有选中 + } + } + + /// + /// 根据当前关注角色的库存数据更新装备UI的显示。 + /// 该方法通过对象池机制高效地管理 ItemUI 实例的创建、复用和禁用。 + /// + private void UpdateUI() + { + // 如果没有关注的角色或其库存,则禁用所有 ItemUI。 + if (focusedEntity == null || focusedEntity.Inventory == null) + { + foreach (var itemUI in itemUIPool) + { + if (itemUI != null && itemUI.gameObject != null) + { + itemUI.gameObject.SetActive(false); + } + } + uiParent.SetActive(false); + return; + } + + // 检查用于创建物品UI的预制件是否已在 Inspector 中赋值。 + if (itemUIPrefab == null) + { + Debug.LogError("ItemUIPrefab 未在 EquipmentUI 中指定。无法创建物品用户界面。", this); + foreach (var itemUI in itemUIPool) itemUI.gameObject.SetActive(false); + uiParent.SetActive(false); // 确保父级也被禁用 + return; + } + + int requiredUIs = focusedEntity.Inventory.Capacity; + int currentUIPoolSize = itemUIPool.Count; // 当前对象池中 ItemUI 实例的总数。 + + // 遍历所有必要的物品槽位,复用对象池中的 ItemUI,或在不足时创建新的 ItemUI。 + for (int i = 0; i < requiredUIs; i++) + { + ItemUI itemUI; + if (i < currentUIPoolSize) + { + itemUI = itemUIPool[i]; + } + else + { + // 使用 Instantiate(GameObject, Transform) 以确保父级设置正确且避免转换问题。 + var itemObj = Instantiate(itemUIPrefab.gameObject, uiParent.transform); + itemUI = itemObj.GetComponent(); + itemUIPool.Add(itemUI); + currentUIPoolSize++; // 更新池的大小计数。 + } + + // 确保 ItemUI GameObject 处于激活状态,并使用当前物品槽位的数据进行初始化。 + itemUI.gameObject.SetActive(true); + itemUI.Init(focusedEntity.Inventory.GetSlot(i), i); + // 移除此处 itemUI.Select = false; 选中状态将由 UpdateSelectionUI 统一管理 + } + + // 如果库存槽位数量减少,禁用对象池中多余的 ItemUI 实例。 + for (int i = requiredUIs; i < currentUIPoolSize; i++) + { + if (itemUIPool[i] != null && itemUIPool[i].gameObject != null) + { + itemUIPool[i].gameObject.SetActive(false); + itemUIPool[i].Select = false; // 禁用时也确保清除选中状态 + } + } + uiParent.SetActive(true); + + // 首次更新UI时,或者当Inventory改变时,需要确保 CurrentSelected 的UI状态是正确的 + // 但如果 UpdateFocusedEntity 已经处理了,这里可以省略,或者确保只在必要时调用 + // 考虑到 UpdateUI 也会被 Inventory.OnInventoryChanged 调用,这里再次确保同步是合理的。 + if (focusedEntity != null && focusedEntity.Inventory != null && focusedEntity.Inventory.Capacity > 0) + { + UpdateSelectionUI(focusedEntity.CurrentSelected); + } + else + { + UpdateSelectionUI(-1); + } + } + + /// + /// 当当前选中物品改变时,更新所有 ItemUI 的选中状态。 + /// + /// 当前选中的物品索引。传入 -1 将取消所有 ItemUI 的选中状态。 + private void UpdateSelectionUI(int selectedItemIndex) + { + // 如果对象池为空,则无需更新 + if (itemUIPool == null || itemUIPool.Count == 0) + { + return; + } + + for (int i = 0; i < itemUIPool.Count; i++) + { + ItemUI itemUI = itemUIPool[i]; + if (itemUI != null && itemUI.gameObject != null) + { + // 只有在 ItemUI 激活状态下才设置其选中状态,避免对禁用UI的操作 + // 或者如果传入-1,即使激活也全部设置为false + if (itemUI.gameObject.activeSelf || selectedItemIndex == -1) // 确保当取消所有选中时,循环到所有激活的,甚至当前禁用的ItemUI + { + itemUI.Select = (i == selectedItemIndex && itemUI.gameObject.activeSelf); + } + } + } + } + + /// + /// 每帧调用的更新方法,用于处理滚轮输入以选择物品。 + /// + public void Tick() + { + // 如果没有焦点实体、没有库存或库存为空,不进行选择操作 + if (focusedEntity == null || focusedEntity.Inventory == null || focusedEntity.Inventory.Capacity == 0) + { + return; + } + + float scrollInput = Input.GetAxis("Mouse ScrollWheel"); + + if (scrollInput != 0) // 检测到滚轮输入 + { + int currentSelection = focusedEntity.CurrentSelected; + int inventoryCapacity = focusedEntity.Inventory.Capacity; + + if (scrollInput > 0) // 滚轮向上,选择前一个 + { + currentSelection--; + if (currentSelection < 0) + { + currentSelection = inventoryCapacity - 1; // 循环到最后一个 + } + } + else // 滚轮向下,选择后一个 + { + currentSelection++; + if (currentSelection >= inventoryCapacity) + { + currentSelection = 0; // 循环到第一个 + } + } + + // 如果选择发生变化,则更新焦点实体和UI + if (focusedEntity.CurrentSelected != currentSelection) + { + focusedEntity.CurrentSelected = currentSelection; + UpdateSelectionUI(currentSelection); // 更新UI选中状态 + } + } + } + } +} diff --git a/Client/Assets/Scripts/UI/EquipmentUI.cs.meta b/Client/Assets/Scripts/UI/EquipmentUI.cs.meta new file mode 100644 index 0000000..26fbcde --- /dev/null +++ b/Client/Assets/Scripts/UI/EquipmentUI.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4432817f903945648bdc0b3a4ba19adc +timeCreated: 1756195128 \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/EscUI.cs b/Client/Assets/Scripts/UI/EscUI.cs index 0b2f970..6d57291 100644 --- a/Client/Assets/Scripts/UI/EscUI.cs +++ b/Client/Assets/Scripts/UI/EscUI.cs @@ -1,4 +1,6 @@ +using Base; using UnityEngine; +using UnityEngine.SceneManagement; namespace UI { @@ -9,7 +11,7 @@ namespace UI Base.UIInputControl.Instance.Hide(this); } - public void ExitButton() + public static void ExitButton() { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; // 停止编辑器播放模式 @@ -18,9 +20,16 @@ namespace UI #endif } - public void SettingsButton() + public static void SettingsButton() { - + UIInputControl.Instance.Show("SettingUI"); + } + + public static void ReturnMainMenu() + { + if (SceneManager.GetActiveScene().buildIndex == 0) + return; + SceneManager.LoadScene(0); } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/ItemUI.cs b/Client/Assets/Scripts/UI/ItemUI.cs new file mode 100644 index 0000000..a378a8f --- /dev/null +++ b/Client/Assets/Scripts/UI/ItemUI.cs @@ -0,0 +1,91 @@ +using System; +using Base; +using TMPro; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace UI +{ + public class ItemUI:MonoBehaviour,IPointerEnterHandler,IPointerExitHandler,IPointerClickHandler,ITick + { + [SerializeField] private Image textureUI; + [SerializeField] private TMP_Text countUI; + [SerializeField] private TMP_Text nameUI; + [SerializeField] private GameObject selectedOutline; + + private Entity.InventorySlot _item; + private float timer = 0; + private float switchTime = 0; + private int texturePtr = 0; + + public event Action OnPlayerSelect; + + public bool Select + { + get => selectedOutline.activeSelf; + set => selectedOutline.SetActive(value); + } + + public int SlotIndex { get; private set; } = -1; + + public void Init(Entity.InventorySlot item,int index) + { + if (item == null) + { + switchTime = -1; + textureUI.gameObject.SetActive(false); + countUI.text = ""; + nameUI.text = ""; + return; + } + + textureUI.gameObject.SetActive(true); + _item = item; + textureUI.sprite = item.Item.Icon[0]; + countUI.text = item.Quantity.ToString(); + nameUI.text = item.Item.Name; + nameUI.gameObject.SetActive(false); + Select = false; + SlotIndex = index; + if (item.Item.FPS > 0) + { + switchTime = 1f / item.Item.FPS; + } + else + { + switchTime = 0; + } + } + + public void OnPointerEnter(PointerEventData eventData) + { + nameUI.gameObject.SetActive(true); + } + + public void OnPointerExit(PointerEventData eventData) + { + nameUI.gameObject.SetActive(false); + } + public void OnPointerClick(PointerEventData eventData) + { + OnPlayerSelect?.Invoke(); + } + public void Tick() + { + if (switchTime > 0) + { + timer+=Time.deltaTime; + if (timer >= switchTime) + { + timer-=switchTime; + texturePtr++; + texturePtr%=_item.Item.Icon.Count; + textureUI.sprite=_item.Item.Icon[texturePtr]; + } + } + } + + + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/ItemUI.cs.meta b/Client/Assets/Scripts/UI/ItemUI.cs.meta new file mode 100644 index 0000000..db945f3 --- /dev/null +++ b/Client/Assets/Scripts/UI/ItemUI.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7d651a3517184abcb4aff78629eb7946 +timeCreated: 1756195181 \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/LogUI.cs b/Client/Assets/Scripts/UI/LogUI.cs index 0aa1435..d89f999 100644 --- a/Client/Assets/Scripts/UI/LogUI.cs +++ b/Client/Assets/Scripts/UI/LogUI.cs @@ -42,7 +42,7 @@ namespace UI // 如果日志数量减少,清理多余的条目 if (logs.Count < _lastLogCount) { - for (int i = logs.Count; i < _lastLogCount; i++) + for (var i = logs.Count; i < _lastLogCount; i++) { Destroy(_logItems[i].gameObject); } @@ -51,7 +51,7 @@ namespace UI } // 更新现有条目 - for (int i = 0; i < Math.Min(logs.Count, _logItems.Count); i++) + for (var i = 0; i < Math.Min(logs.Count, _logItems.Count); i++) { UpdateLogEntry(_logItems[i], logs[logs.Count - 1 - i]); } @@ -59,7 +59,7 @@ namespace UI // 添加新的条目 if (logs.Count > _lastLogCount) { - for (int i = _lastLogCount; i < logs.Count; i++) + for (var i = _lastLogCount; i < logs.Count; i++) { CreateLogEntry(logs[logs.Count - 1 - i]); } @@ -85,7 +85,7 @@ namespace UI logItem.Label = entry.ToString(); // 设置文本颜色(根据日志类型) - if (logColors.TryGetValue(entry.Type, out Color color)) + if (logColors.TryGetValue(entry.Type, out var color)) { logItem.text.color = color; } diff --git a/Client/Assets/Scripts/UI/PlayerStateUI.cs b/Client/Assets/Scripts/UI/PlayerStateUI.cs new file mode 100644 index 0000000..a9d5526 --- /dev/null +++ b/Client/Assets/Scripts/UI/PlayerStateUI.cs @@ -0,0 +1,24 @@ +using System; +using TMPro; +using UnityEngine; + +namespace UI +{ + public class PlayerStateUI:MonoBehaviour,Base.ITick + { + [SerializeField] private BarUI focusedEntityHP; + [SerializeField] private BarUI lastEntityHP; + + + public void Tick() + { + var focusedEntity = Program.Instance.FocusedEntity; + if (focusedEntity && focusedEntity.entityDef != null) + { + focusedEntityHP.Progress = + (float)focusedEntity.attributes.health / focusedEntity.entityDef.attributes.health; + } + } + + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/PlayerStateUI.cs.meta b/Client/Assets/Scripts/UI/PlayerStateUI.cs.meta new file mode 100644 index 0000000..4ae0b06 --- /dev/null +++ b/Client/Assets/Scripts/UI/PlayerStateUI.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2fcb0352f5bd43a49b164e24a38447e3 +timeCreated: 1756183287 \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/SettingUI.cs b/Client/Assets/Scripts/UI/SettingUI.cs new file mode 100644 index 0000000..0486c89 --- /dev/null +++ b/Client/Assets/Scripts/UI/SettingUI.cs @@ -0,0 +1,75 @@ +using System.Globalization; +using Base; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace UI +{ + public class SettingUI : UIBase + { + [SerializeField] private Scrollbar globalVolume; + [SerializeField] private Toggle developerMode; + [SerializeField] private Toggle friendlyFire; + [SerializeField] private Toggle showMiniMap; + [SerializeField] private TMP_Dropdown windowMode; + [SerializeField] private TMP_Dropdown windowResolution; + [SerializeField] private TMP_InputField progressStepDuration; + [SerializeField] private TMP_InputField exitAnimationDuration; + + Base.Setting.GameSettings currentSettings; + + public override void Show() + { + base.Show(); + currentSettings = Base.Setting.Instance.CurrentSettings; + globalVolume.value = currentSettings.globalVolume; + developerMode.isOn = currentSettings.developerMode; + friendlyFire.isOn = currentSettings.friendlyFire; + showMiniMap.isOn = currentSettings.showMiniMap; + + progressStepDuration.text = currentSettings.progressStepDuration.ToString(CultureInfo.InvariantCulture); + exitAnimationDuration.text = currentSettings.exitAnimationDuration.ToString(CultureInfo.InvariantCulture); + + windowResolution.ClearOptions(); + var options = new System.Collections.Generic.List(); + foreach (var resolution in Base.Setting.CommonResolutions) + { + options.Add(new TMP_Dropdown.OptionData(resolution.ToString())); + } + windowResolution.AddOptions(options); + if (currentSettings.windowResolution != null) + { + var resolutionIndex = System.Array.FindIndex(Base.Setting.CommonResolutions, r => r == currentSettings.windowResolution); + windowResolution.value = resolutionIndex >= 0 ? resolutionIndex : 0; + } + else + { + windowResolution.value = 0; + } + } + public void CancelSettings() + { + UIInputControl.Instance.Hide(this); + } + public void ApplySettings() + { + currentSettings.globalVolume = globalVolume.value; + currentSettings.developerMode = developerMode.isOn; + currentSettings.friendlyFire = friendlyFire.isOn; + currentSettings.currentWindowMode = (Base.Setting.WindowMode)windowMode.value; + currentSettings.windowResolution = Base.Setting.CommonResolutions[windowResolution.value]; + currentSettings.progressStepDuration = float.Parse(progressStepDuration.text, CultureInfo.InvariantCulture); + currentSettings.exitAnimationDuration = float.Parse(exitAnimationDuration.text, CultureInfo.InvariantCulture); + currentSettings.showMiniMap = showMiniMap.isOn; + Base.Setting.Instance.CurrentSettings = currentSettings; + Base.Setting.Instance.Apply(); + } + public void EnterSetting() + { + ApplySettings(); + UIInputControl.Instance.Hide(this); + Base.Setting.Instance.SaveSettings(); + } + } +} \ No newline at end of file diff --git a/Client/Assets/Scripts/UI/SettingUI.cs.meta b/Client/Assets/Scripts/UI/SettingUI.cs.meta new file mode 100644 index 0000000..ca0b7f2 --- /dev/null +++ b/Client/Assets/Scripts/UI/SettingUI.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7f4127efa613491894a9b1a7e9918a26 +timeCreated: 1755600172 \ No newline at end of file diff --git a/Client/Assets/Scripts/Utils/BehaviorTree.cs b/Client/Assets/Scripts/Utils/BehaviorTree.cs index 16fd222..36c662b 100644 --- a/Client/Assets/Scripts/Utils/BehaviorTree.cs +++ b/Client/Assets/Scripts/Utils/BehaviorTree.cs @@ -17,6 +17,7 @@ namespace Utils if (behaviorTreeDef == null) return null; var aiBase = CreateAIBaseInstance(behaviorTreeDef.className); + aiBase.Init(behaviorTreeDef); if (behaviorTreeDef.childTree != null) { foreach (var child in behaviorTreeDef.childTree) diff --git a/Client/Assets/Scripts/Utils/MonoSingleton.cs b/Client/Assets/Scripts/Utils/MonoSingleton.cs index dfb1e55..9275b67 100644 --- a/Client/Assets/Scripts/Utils/MonoSingleton.cs +++ b/Client/Assets/Scripts/Utils/MonoSingleton.cs @@ -11,7 +11,6 @@ namespace Utils private void Awake() { - Debug.LogWarning($"{typeof(T)} [{GetInstanceID()}] Awake"); if (isGlobal) { if (_instance is not null && _instance != gameObject.GetComponent()) diff --git a/Client/Assets/Scripts/Utils/Pathfinder.cs b/Client/Assets/Scripts/Utils/Pathfinder.cs deleted file mode 100644 index 6bd4cc3..0000000 --- a/Client/Assets/Scripts/Utils/Pathfinder.cs +++ /dev/null @@ -1,183 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace Utils -{ - - public static class Pathfinder - { - public static List FindPath(Entity.Entity entity, Vector2 target, float maxDistance) - { - Vector2 start = entity.Position; - - // 计算起点和终点所在的瓦片坐标 - var startTile = GetTileCoord(start); - var endTile = GetTileCoord(target); - - // 如果超出最大距离,直接返回直线路径或空路径 - if (Vector2.Distance(start, target) > maxDistance) - { - return new List { start, target }; - } - - // A*算法数据结构 - var cameFrom = new Dictionary(); - var gScore = new Dictionary(); - var fScore = new Dictionary(); - var openSet = new List(); - - // 初始化 - gScore[startTile] = 0; - fScore[startTile] = Heuristic(startTile, endTile); - openSet.Add(startTile); - - var closestNode = startTile; - var closestDist = Vector2.Distance(start, target); - - while (openSet.Count > 0) - { - // 获取fScore最小的节点 - var current = openSet[0]; - foreach (var node in openSet) - { - if (fScore.GetValueOrDefault(node, float.MaxValue) < - fScore.GetValueOrDefault(current, float.MaxValue)) - { - current = node; - } - } - - // 检查是否到达目标 - if (current == endTile) - { - return ReconstructPath(cameFrom, current, start, target); - } - - openSet.Remove(current); - - // 检查最大距离限制 - var currentDist = Vector2.Distance( - new Vector2(current.x, current.y), - target); - - if (currentDist < closestDist) - { - closestDist = currentDist; - closestNode = current; - } - - if (gScore[current] > maxDistance) - { - return ReconstructPath(cameFrom, closestNode, start, target); - } - - // 遍历邻居(8方向) - for (var dx = -1; dx <= 1; dx++) - { - for (var dy = -1; dy <= 1; dy++) - { - if (dx == 0 && dy == 0) continue; - - var neighbor = new Vector2Int(current.x + dx, current.y + dy); - - // 跳过不可通行区域 - if (!Map.MapGenerator.Instance.CanPassThrough(neighbor.x, neighbor.y)) - { - continue; - } - - // 计算移动成本 - var moveCost = GetMovementCost(current, neighbor); - var tentativeGScore = gScore[current] + moveCost; - - // 跳过超出最大距离的路径 - if (tentativeGScore > maxDistance) - { - continue; - } - - // 发现新节点或找到更好路径 - if (tentativeGScore < gScore.GetValueOrDefault(neighbor, float.MaxValue)) - { - cameFrom[neighbor] = current; - gScore[neighbor] = tentativeGScore; - fScore[neighbor] = tentativeGScore + Heuristic(neighbor, endTile); - - if (!openSet.Contains(neighbor)) - { - openSet.Add(neighbor); - } - } - } - } - } - - // 无法找到完整路径时返回局部最优解 - return ReconstructPath(cameFrom, closestNode, start, target); - } - - // 获取瓦片坐标(每个瓦片覆盖±0.5范围) - private static Vector2Int GetTileCoord(Vector2 position) - { - return new Vector2Int( - Mathf.RoundToInt(position.x), - Mathf.RoundToInt(position.y) - ); - } - - // 计算启发式估值(欧几里得距离) - private static float Heuristic(Vector2Int a, Vector2Int b) - { - return Vector2.Distance( - new Vector2(a.x, a.y), - new Vector2(b.x, b.y) - ); - } - - // 获取移动成本 - private static float GetMovementCost(Vector2Int from, Vector2Int to) - { - // 计算基础距离(正交=1,对角=√2) - var distance = (from.x == to.x || from.y == to.y) ? 1f : 1.4142f; - - // 应用目标瓦片的速度削减率 - var costModifier = Map.MapGenerator.Instance.GetTilePassCost(to.x, to.y); - - // 成本 = 距离 × (1 + 速度削减率) - return distance * (1 + costModifier); - } - - // 重建路径 - private static List ReconstructPath( - Dictionary cameFrom, - Vector2Int current, - Vector2 start, - Vector2 end) - { - // 构建瓦片路径 - var tilePath = new List(); - tilePath.Add(current); - - while (cameFrom.ContainsKey(current)) - { - current = cameFrom[current]; - tilePath.Add(current); - } - - tilePath.Reverse(); - - // 转换为实际坐标路径 - var path = new List(); - path.Add(start); // 添加精确起点 - - // 添加路径点(瓦片中心) - foreach (var tile in tilePath) - { - path.Add(new Vector2(tile.x, tile.y)); - } - - path.Add(end); // 添加精确终点 - return path; - } - } -} \ No newline at end of file diff --git a/Client/Assets/Scripts/Utils/Pathfinder.cs.meta b/Client/Assets/Scripts/Utils/Pathfinder.cs.meta deleted file mode 100644 index 2613e9f..0000000 --- a/Client/Assets/Scripts/Utils/Pathfinder.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 586ed74166c04dae862f096bdc52f63b -timeCreated: 1754750432 \ No newline at end of file diff --git a/Client/Assets/Settings/DefaultVolumeProfile.asset b/Client/Assets/Settings/DefaultVolumeProfile.asset index 6fb1822..9e4bbfd 100644 --- a/Client/Assets/Settings/DefaultVolumeProfile.asset +++ b/Client/Assets/Settings/DefaultVolumeProfile.asset @@ -342,6 +342,9 @@ MonoBehaviour: skyOcclusionIntensityMultiplier: m_OverrideState: 1 m_Value: 1 + worldOffset: + m_OverrideState: 1 + m_Value: {x: 0, y: 0, z: 0} --- !u!114 &-1216621516061285780 MonoBehaviour: m_ObjectHideFlags: 3 @@ -462,8 +465,6 @@ MonoBehaviour: - {fileID: -6288072647309666549} - {fileID: 7518938298396184218} - {fileID: -1410297666881709256} - - {fileID: -7750755424749557576} - - {fileID: -5139089513906902183} --- !u!114 &853819529557874667 MonoBehaviour: m_ObjectHideFlags: 3 diff --git a/Client/Assets/TextMesh Pro/Fonts/SIMHEI SDF.asset b/Client/Assets/TextMesh Pro/Fonts/SIMHEI SDF.asset index fa387c8..4791a9a 100644 --- a/Client/Assets/TextMesh Pro/Fonts/SIMHEI SDF.asset +++ b/Client/Assets/TextMesh Pro/Fonts/SIMHEI SDF.asset @@ -116,7 +116,7 @@ Material: - _OutlineSoftness: 0 - _OutlineUVSpeedX: 0 - _OutlineUVSpeedY: 0 - - _OutlineWidth: 0 + - _OutlineWidth: 0.2 - _PerspectiveFilter: 0.875 - _Reflectivity: 10 - _ScaleRatioA: 0.9 @@ -148,7 +148,7 @@ Material: - _FaceColor: {r: 1, g: 1, b: 1, a: 1} - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} - - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _OutlineColor: {r: 0.8156863, g: 0.1254902, b: 0.5647059, a: 1} - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Client/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset b/Client/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset index b36ea12..d5c9fd7 100644 --- a/Client/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset +++ b/Client/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset @@ -236,7 +236,457 @@ MonoBehaviour: m_FontFeatureTable: m_MultipleSubstitutionRecords: [] m_LigatureSubstitutionRecords: [] - m_GlyphPairAdjustmentRecords: [] + m_GlyphPairAdjustmentRecords: + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.5537109 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.5537109 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 827 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 836 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 839 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 846 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.5537109 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 854 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.5537109 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 855 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.5537109 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 861 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.5537109 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 16 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 29 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 30 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.3828125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.5537109 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 50 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 70 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1914062 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 76 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 82 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1914062 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.532227 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 86 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1914062 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 88 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 m_MarkToBaseAdjustmentRecords: [] m_MarkToMarkAdjustmentRecords: [] m_ShouldReimportFontFeatures: 0 diff --git a/Client/Data/Core/Define/Item/Item.xml b/Client/Data/Core/Define/Item/Item.xml new file mode 100644 index 0000000..b0f25a5 --- /dev/null +++ b/Client/Data/Core/Define/Item/Item.xml @@ -0,0 +1,11 @@ + + + + smallHealthPotion​​ + + 可以回复一点点血量 + +
  • TestGun
  • +
    +
    +
    \ No newline at end of file diff --git a/Client/Data/Core/Define/Item/Weapon.xml b/Client/Data/Core/Define/Item/Weapon.xml index f373d69..1c020aa 100644 --- a/Client/Data/Core/Define/Item/Weapon.xml +++ b/Client/Data/Core/Define/Item/Weapon.xml @@ -1,5 +1,20 @@ + + + TestGunItem + Resources\Item\TestGun.png + + + + TestGun + Resources\Item\TestGunUse.png + + + yellowBullet + Resources\Item\YellowBullet_down.png + + TestGun 10 @@ -14,8 +29,10 @@ 一把测试用的枪 TestGun - TestGun - TestGunItem + Ranged + +
  • TestGunItem
  • +
    yellowBullet
    @@ -26,26 +43,38 @@ 20 - Resources\Item - 20 - - - + + +
  • yellowBullet
  • +
    +
    + + +
  • yellowBullet
  • +
    +
    - - - - - TestGunItem - Resources\Item\TestGun.png - - - - TestGun - Resources\Item\TestGunUse.png - + + testGunBullet + + 1 + 20 + + + + +
  • TestGun
  • +
    +
    + + +
  • TestGun
  • +
    +
    +
    +
    @@ -61,6 +90,7 @@ Claw + Melee 爪子 Claw diff --git a/Client/Data/Core/Define/Pawn/Character.xml b/Client/Data/Core/Define/Pawn/Character.xml index 6685f25..62e229c 100644 --- a/Client/Data/Core/Define/Pawn/Character.xml +++ b/Client/Data/Core/Define/Pawn/Character.xml @@ -1,5 +1,20 @@ + + + testPawnAnimation + res:Character/Test/Body/idle_down + 5 + 1 + + + testPawn + Resources\Character\test.png + 4 + 4 + + + testPawn @@ -10,12 +25,99 @@ player - res:Character\Test - - - + + + +
  • testPawn_0
  • +
    +
    + + +
  • testPawn_4
  • +
    +
    + + +
  • testPawn_8
  • +
    +
    + + +
  • testPawn_12
  • +
    +
    + + + + +
  • testPawn_1
  • +
    +
    + + +
  • testPawn_5
  • +
    +
    + + +
  • testPawn_9
  • +
    +
    + + +
  • testPawn_13
  • +
    +
    + + + + +
  • testPawn_2
  • +
    +
    + + +
  • testPawn_6
  • +
    +
    + + +
  • testPawn_10
  • +
    +
    + + +
  • testPawn_14
  • +
    +
    + + + + +
  • testPawn_3
  • +
    +
    + + +
  • testPawn_7
  • +
    +
    + + +
  • testPawn_11
  • +
    +
    + + +
  • testPawn_15
  • +
    +
    + + + +
    @@ -30,12 +132,24 @@ player - res:Character\Test - - - + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    + + + +
    @@ -50,14 +164,25 @@ player - res:Character\HighSpeed - 200 - - - + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    - + + + + +
    @@ -71,14 +196,25 @@ player - res:Character\HighSpeed - 200 - - - + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    - + + + + + diff --git a/Client/Data/Core/Define/Pawn/Monster.xml b/Client/Data/Core/Define/Pawn/Monster.xml index 18b0ce7..dd7922d 100644 --- a/Client/Data/Core/Define/Pawn/Monster.xml +++ b/Client/Data/Core/Define/Pawn/Monster.xml @@ -3,10 +3,66 @@ chicken - - embrace - + + + + + + + + + monster + + 1 + 123 + + Claw + + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    +
    + + big + + + + + + + + + monster + + 1 + 123 + + TestGun + + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Client/Data/Core/Resources/Character/test.png b/Client/Data/Core/Resources/Character/test.png new file mode 100644 index 0000000000000000000000000000000000000000..4c58e219b8db2c1515c9b23c35e1b2ef8567b9c3 GIT binary patch literal 734 zcmV<40wMj0P)Px%m`OxIRCt{2n@euOFc5|(71`zl-Sz}kxeg1&sSt}^Cx{cU=N{Vw(Fbo^=SYAzCJcAF(EI|Yz(gftZ?7&m@!U=rr95j(JUG>DCGJ2G*)Da@RYbu z4U?QUCH5}zA>0rMy+pd-FYa0A>(jX5Fek-^*jTtWBNTyZ1S^$Fr4oVDU1`Z0sm%zL zGEi_-g=d4YnIHf!BjjEm8#z+!hOFV49}$^&B0Aw!_;`aj=mgvGS&@O69Ty}^JRYVF%4beAOxgbIn)B%j8S?~3xf0Z-28nkD@Y*3>iCTV3Up|iK_TykcE7|B|n!h@*A(br^X z4nkt3SD%Y+kf7i$qj3gEDIqAfL4tZYN1SBa5L=XGv%B1~Jwap3j|p1cC;t2MJ$Wpz zeWL^!0x5zqOWF=M$tEd$OtW}^#1H@&dWG99xuUgugIEZpt_x^^ES&X%m?2`dj?r$A z(P;1PDy3P9M--b5uQv86mf!`!ZZLJT^iuJP@`w*!>w{DCT0(*~6y~fBTks^vCo(oX zmKZ)~=L4*}?=Cl!Ga4NGmzdan90Q4Y7&j;2uKG^7v@S_7Exxu9FaQ7m literal 0 HcmV?d00001 diff --git a/Client/ProjectSettings/EditorBuildSettings.asset b/Client/ProjectSettings/EditorBuildSettings.asset index 4388493..a69d7eb 100644 --- a/Client/ProjectSettings/EditorBuildSettings.asset +++ b/Client/ProjectSettings/EditorBuildSettings.asset @@ -5,12 +5,12 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - - enabled: 0 - path: Assets/Scenes/Game.unity - guid: 5995047d2fd0f65408e4a7910dca711a - enabled: 1 path: Assets/Scenes/Initiate.unity guid: 843cfe07c63263c42bae7362250d568e + - enabled: 1 + path: Assets/Scenes/Game.unity + guid: 5995047d2fd0f65408e4a7910dca711a m_configObjects: com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3} m_UseUCBPForAssetBundles: 0