From eb818e62950c857a088b67a77fbd6f2967c2608f Mon Sep 17 00:00:00 2001 From: SepComet <2428390463@qq.com> Date: Sat, 7 Mar 2026 18:45:25 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=B7=BB=E5=8A=A0=20CombatFailedState=20?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E8=B7=AF=E5=BE=84=20-=20CombatInfoForm=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=BC=82=E5=B8=B8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CombatScheduler/CombatLoadSession.cs | 3 +- .../CombatScheduler/CombatScheduler.cs | 60 +++++- .../CombatStates/CombatFailedState.cs | 15 +- .../Event/Combat/CombatDebugFailEventArgs.cs | 21 ++ .../Combat/CombatDebugFailEventArgs.cs.meta | 3 + .../Combat/CombatFailureReturnEventArgs.cs | 21 ++ .../CombatFailureReturnEventArgs.cs.meta | 3 + .../Scripts/Procedure/ProcedureMenu.cs | 10 + .../Controller/CombatInfoFormController.cs | 12 ++ .../Combat/UseCase/CombatInfoFormUseCase.cs | 14 +- .../Scripts/UI/Combat/View/CombatInfoForm.cs | 5 + .../GameMain/UI/UIForms/CombatInfoForm.prefab | 189 +++++++++++++++++- 12 files changed, 338 insertions(+), 18 deletions(-) create mode 100644 Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs create mode 100644 Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs.meta create mode 100644 Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs create mode 100644 Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs.meta diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatLoadSession.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatLoadSession.cs index f0c1155..0690feb 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatLoadSession.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatLoadSession.cs @@ -260,7 +260,8 @@ namespace GeometryTD.CustomComponent _combatInfoFormUseCase.Configure( () => BuildCombatInfoFormRawData(scheduler), - () => scheduler != null && scheduler.CanEndCombat && scheduler.TryEndCombatByPlayer()); + () => scheduler != null && scheduler.CanEndCombat && scheduler.TryEndCombatByPlayer(), + () => scheduler != null && scheduler.TryDebugFail("Manual debug fail from CombatInfoForm.")); int? serialId = GameEntry.UIRouter.OpenUI(UIFormType.CombatInfoForm); if (!serialId.HasValue) diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs index e29e776..15bd847 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs @@ -233,6 +233,19 @@ namespace GeometryTD.CustomComponent return _combatInRunResourceManager.TryGetBuildTowerStats(buildIndex, out stats); } + public bool TryDebugFail(string errorMessage) + { + if (_isCompleted || _currentState == null || _currentState is CombatFailedState) + { + return false; + } + + EnterFailureFallback(string.IsNullOrWhiteSpace(errorMessage) + ? "Manual debug fail." + : errorMessage); + return _currentState is CombatFailedState; + } + private void ResetRuntime() { _currentState = null; @@ -266,6 +279,20 @@ namespace GeometryTD.CustomComponent GameEntry.UIRouter.BindUIUseCase(UIFormType.RewardSelectForm, _rewardSelectFormUseCase); } + private void OpenCombatFailureDialog(string errorMessage) + { + CloseDialogForm(); + GameEntry.UIRouter.OpenUI(UIFormType.DialogForm, new DialogFormRawData + { + Mode = 1, + Title = "Combat Error", + Message = string.IsNullOrWhiteSpace(errorMessage) ? "Combat failed unexpectedly." : errorMessage, + PauseGame = false, + ConfirmText = "Return Menu", + OnClickConfirm = OnCombatFailureDialogConfirmed + }); + } + private void ChangeState(CombatStateBase nextState) { if (ReferenceEquals(_currentState, nextState)) @@ -387,6 +414,11 @@ namespace GeometryTD.CustomComponent GameEntry.UIRouter.CloseUI(UIFormType.RewardSelectForm); } + private void CloseDialogForm() + { + GameEntry.UIRouter.CloseUI(UIFormType.DialogForm); + } + private void CompleteCombat(bool succeeded) { _isCompleted = true; @@ -401,6 +433,16 @@ namespace GeometryTD.CustomComponent GameEntry.Event.Fire(this, NodeCompleteEventArgs.Create()); } + private void CompleteFailureCombatAndNotify() + { + CleanupAllCombatEntities(); + CloseCombatFinishForm(); + CloseRewardSelectForm(); + CloseDialogForm(); + CompleteCombat(false); + GameEntry.Event.Fire(this, CombatFailureReturnEventArgs.Create()); + } + private bool HandleStartFailure(string errorMessage) { Log.Warning("{0}", errorMessage); @@ -419,7 +461,7 @@ namespace GeometryTD.CustomComponent return; } - ChangeState(new CombatFailedState(this, errorMessage, true)); + ChangeState(new CombatFailedState(this, errorMessage)); } private static int ResolveEnemyHpRateMultiplier(int displayPhaseIndex, int phaseCount) @@ -438,6 +480,17 @@ namespace GeometryTD.CustomComponent return 1 << completedLoopCount; } + private void OnCombatFailureDialogConfirmed(object userData) + { + _ = userData; + if (_currentState is not CombatFailedState || _isCompleted) + { + return; + } + + CompleteFailureCombatAndNotify(); + } + #region Event Handlers private void OnShowEntitySuccess(ShowEntitySuccessEventArgs args) @@ -501,10 +554,5 @@ namespace GeometryTD.CustomComponent #endregion - private void GameOverByFailure() - { - CompleteCombat(false); - } - } } diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs index d2ae3d1..34e67e9 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatFailedState.cs @@ -7,12 +7,10 @@ namespace GeometryTD.CustomComponent private sealed class CombatFailedState : CombatStateBase { private readonly string _errorMessage; - private readonly bool _notifyCombatNode; - public CombatFailedState(CombatScheduler scheduler, string errorMessage, bool notifyCombatNode) : base(scheduler) + public CombatFailedState(CombatScheduler scheduler, string errorMessage) : base(scheduler) { _errorMessage = errorMessage; - _notifyCombatNode = notifyCombatNode; } public override void OnEnter() @@ -22,13 +20,14 @@ namespace GeometryTD.CustomComponent Scheduler._currentLevel != null ? Scheduler._currentLevel.Id : 0, _errorMessage); Scheduler._enemyManager.EndPhase(); - Scheduler.CleanupAllCombatEntities(); Scheduler.CloseCombatFinishForm(); Scheduler.CloseRewardSelectForm(); - if (_notifyCombatNode) - { - Scheduler.GameOverByFailure(); - } + Scheduler.OpenCombatFailureDialog(_errorMessage); + } + + public override void OnExit() + { + Scheduler.CloseDialogForm(); } } } diff --git a/Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs b/Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs new file mode 100644 index 0000000..ae32419 --- /dev/null +++ b/Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs @@ -0,0 +1,21 @@ +using GameFramework; +using GameFramework.Event; + +namespace GeometryTD.CustomEvent +{ + public class CombatDebugFailEventArgs : GameEventArgs + { + public static int EventId => typeof(CombatDebugFailEventArgs).GetHashCode(); + + public override int Id => EventId; + + public static CombatDebugFailEventArgs Create() + { + return ReferencePool.Acquire(); + } + + public override void Clear() + { + } + } +} diff --git a/Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs.meta b/Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs.meta new file mode 100644 index 0000000..e0dc633 --- /dev/null +++ b/Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2b2c9f455d7b43e8ac4d31ecf1d3ec8d +timeCreated: 1772863800 diff --git a/Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs b/Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs new file mode 100644 index 0000000..f134dd2 --- /dev/null +++ b/Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs @@ -0,0 +1,21 @@ +using GameFramework; +using GameFramework.Event; + +namespace GeometryTD.CustomEvent +{ + public class CombatFailureReturnEventArgs : GameEventArgs + { + public static int EventId => typeof(CombatFailureReturnEventArgs).GetHashCode(); + + public override int Id => EventId; + + public static CombatFailureReturnEventArgs Create() + { + return ReferencePool.Acquire(); + } + + public override void Clear() + { + } + } +} diff --git a/Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs.meta b/Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs.meta new file mode 100644 index 0000000..d6e2ab1 --- /dev/null +++ b/Assets/GameMain/Scripts/Event/Combat/CombatFailureReturnEventArgs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7db1bf4f6f5f435d8d3086510e178d1d +timeCreated: 1772863200 diff --git a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs index 5bb8a26..8427f02 100644 --- a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs +++ b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs @@ -27,6 +27,7 @@ namespace GeometryTD.Procedure { base.OnEnter(procedureOwner); + GameEntry.Event.Subscribe(CombatFailureReturnEventArgs.EventId, OnCombatFailureReturn); GameEntry.Event.Subscribe(NodeCompleteEventArgs.EventId, OnNodeComplete); GameEntry.Event.Subscribe(NodeEnterEventArgs.EventId, OnNodeEnter); @@ -62,6 +63,7 @@ namespace GeometryTD.Procedure protected override void OnLeave(IFsm procedureOwner, bool isShutdown) { GameEntry.CombatNode.OnShutdown(); + GameEntry.Event.Unsubscribe(CombatFailureReturnEventArgs.EventId, OnCombatFailureReturn); GameEntry.Event.Unsubscribe(NodeEnterEventArgs.EventId, OnNodeEnter); GameEntry.Event.Unsubscribe(NodeCompleteEventArgs.EventId, OnNodeComplete); _repoFormUseCase = null; @@ -86,5 +88,13 @@ namespace GeometryTD.Procedure GameEntry.UIRouter.OpenUI(UIFormType.TestMenuForm); GameEntry.UIRouter.OpenUI(UIFormType.MainForm); } + + private void OnCombatFailureReturn(object sender, GameEventArgs e) + { + if (!(e is CombatFailureReturnEventArgs)) return; + + GameEntry.UIRouter.OpenUI(UIFormType.TestMenuForm); + GameEntry.UIRouter.OpenUI(UIFormType.MainForm); + } } } diff --git a/Assets/GameMain/Scripts/UI/Combat/Controller/CombatInfoFormController.cs b/Assets/GameMain/Scripts/UI/Combat/Controller/CombatInfoFormController.cs index e9bb284..759497c 100644 --- a/Assets/GameMain/Scripts/UI/Combat/Controller/CombatInfoFormController.cs +++ b/Assets/GameMain/Scripts/UI/Combat/Controller/CombatInfoFormController.cs @@ -20,6 +20,7 @@ namespace GeometryTD.UI { GameEntry.Event.Subscribe(CombatPauseEventArgs.EventId, OnCombatPauseButtonClicked); GameEntry.Event.Subscribe(CombatEndEventArgs.EventId, OnCombatEndButtonClicked); + GameEntry.Event.Subscribe(CombatDebugFailEventArgs.EventId, OnCombatDebugFailButtonClicked); GameEntry.Event.Subscribe(CombatProcessEventArgs.EventId, OnCombatProcessChanged); GameEntry.Event.Subscribe(CombatCoinChangedEventArgs.EventId, OnCombatCoinChanged); GameEntry.Event.Subscribe(CombatBaseHpChangedEventArgs.EventId, OnCombatBaseHpChanged); @@ -30,6 +31,7 @@ namespace GeometryTD.UI { GameEntry.Event.Unsubscribe(CombatPauseEventArgs.EventId, OnCombatPauseButtonClicked); GameEntry.Event.Unsubscribe(CombatEndEventArgs.EventId, OnCombatEndButtonClicked); + GameEntry.Event.Unsubscribe(CombatDebugFailEventArgs.EventId, OnCombatDebugFailButtonClicked); GameEntry.Event.Unsubscribe(CombatProcessEventArgs.EventId, OnCombatProcessChanged); GameEntry.Event.Unsubscribe(CombatCoinChangedEventArgs.EventId, OnCombatCoinChanged); GameEntry.Event.Unsubscribe(CombatBaseHpChangedEventArgs.EventId, OnCombatBaseHpChanged); @@ -176,6 +178,16 @@ namespace GeometryTD.UI _useCase?.TryEndCombat(); } + private void OnCombatDebugFailButtonClicked(object sender, GameEventArgs e) + { + if (!(sender is CombatInfoForm) || !(e is CombatDebugFailEventArgs)) + { + return; + } + + _useCase?.TryDebugFail(); + } + private void OnCombatProcessChanged(object sender, GameEventArgs e) { if (!(e is CombatProcessEventArgs)) diff --git a/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatInfoFormUseCase.cs b/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatInfoFormUseCase.cs index 161f0d9..0cd6edd 100644 --- a/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatInfoFormUseCase.cs +++ b/Assets/GameMain/Scripts/UI/Combat/UseCase/CombatInfoFormUseCase.cs @@ -8,6 +8,7 @@ namespace GeometryTD.UI { private Func _modelProvider; private Func _tryEndCombat; + private Func _tryDebugFail; public CombatInfoFormRawData CreateInitialModel() { @@ -19,10 +20,11 @@ namespace GeometryTD.UI return BuildModel(); } - public void Configure(Func modelProvider, Func tryEndCombat) + public void Configure(Func modelProvider, Func tryEndCombat, Func tryDebugFail) { _modelProvider = modelProvider; _tryEndCombat = tryEndCombat; + _tryDebugFail = tryDebugFail; } public bool TryEndCombat() @@ -35,6 +37,16 @@ namespace GeometryTD.UI return _tryEndCombat.Invoke(); } + public bool TryDebugFail() + { + if (_tryDebugFail == null) + { + return false; + } + + return _tryDebugFail.Invoke(); + } + private CombatInfoFormRawData BuildModel() { return _modelProvider != null ? _modelProvider.Invoke() : null; diff --git a/Assets/GameMain/Scripts/UI/Combat/View/CombatInfoForm.cs b/Assets/GameMain/Scripts/UI/Combat/View/CombatInfoForm.cs index 4a190eb..8d3c1d8 100644 --- a/Assets/GameMain/Scripts/UI/Combat/View/CombatInfoForm.cs +++ b/Assets/GameMain/Scripts/UI/Combat/View/CombatInfoForm.cs @@ -83,6 +83,11 @@ namespace GeometryTD.UI GameEntry.Event.Fire(this, CombatEndEventArgs.Create()); } + public void OnFailButtonClick() + { + GameEntry.Event.Fire(this, CombatDebugFailEventArgs.Create()); + } + protected override void OnOpen(object userData) { base.OnOpen(userData); diff --git a/Assets/GameMain/UI/UIForms/CombatInfoForm.prefab b/Assets/GameMain/UI/UIForms/CombatInfoForm.prefab index a8ba4b0..5b1de39 100644 --- a/Assets/GameMain/UI/UIForms/CombatInfoForm.prefab +++ b/Assets/GameMain/UI/UIForms/CombatInfoForm.prefab @@ -828,14 +828,15 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 5669756128883443685} - {fileID: 5403492755541954141} - {fileID: 7007208554693322137} m_Father: {fileID: 8136671500363545760} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -350, y: -175} - m_SizeDelta: {x: 500, y: 200} + m_AnchoredPosition: {x: -415.65576, y: -175} + m_SizeDelta: {x: 631.3114, y: 200} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &910542505150000154 MonoBehaviour: @@ -1059,6 +1060,190 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a5079836f95c2a44b96fa331487ebb70, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &8141247492847649042 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 6325121653268560776} + m_Modifications: + - target: {fileID: 770565994539545022, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_Name + value: FailButton + objectReference: {fileID: 0} + - target: {fileID: 1920576543566152029, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_text + value: Fail + objectReference: {fileID: 0} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 389500655449199117} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 389500655449199117} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 389500655449199117} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: OnFailButtonClick + objectReference: {fileID: 0} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: GeometryTD.UI.CombatInfoForm, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.x + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.y + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7744090569424522082, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.x + value: -20 + objectReference: {fileID: 0} + - target: {fileID: 7744090569424522082, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.y + value: -20 + objectReference: {fileID: 0} + - target: {fileID: 7744090569424522082, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7744090569424522082, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2307f223279813546a43b221ddd496cc, type: 3} +--- !u!224 &5669756128883443685 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 8141247492847649042} + m_PrefabAsset: {fileID: 0} --- !u!1001 &8406408876340136106 PrefabInstance: m_ObjectHideFlags: 0