From 3e52a4df557f454ad30771fd363883e3f55696a9 Mon Sep 17 00:00:00 2001 From: SepComet <202308010230@stu.csust.edu.cn> Date: Mon, 2 Mar 2026 21:42:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E2=80=9C=E5=A5=96=E5=8A=B1?= =?UTF-8?q?=203=20=E9=80=89=201=E2=80=9DUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RewardSelectForm:其中包括 3 个可选的 RewardItem ,刷新和放弃按钮 - 应用战斗节点基地生命产生的额外事件 --- Assets/GameMain/DataTables/UIForm.txt | 1 + .../CombatScheduler/CombatResourceManager.cs | 84 +- .../CombatScheduler/CombatScheduler.cs | 303 ++++- .../CombatNode/EnemyManager/EnemyManager.cs | 1 - .../PlayerInventoryComponent.cs | 32 + .../Scripts/Definition/Enum/UIFormType.cs | 18 +- Assets/GameMain/Scripts/Event/General.meta | 8 + .../General/RewardSelectGiveUpEventArgs.cs | 21 + .../RewardSelectGiveUpEventArgs.cs.meta | 11 + .../RewardSelectItemSelectedEventArgs.cs | 26 + .../RewardSelectItemSelectedEventArgs.cs.meta | 11 + .../General/RewardSelectRefreshEventArgs.cs | 21 + .../RewardSelectRefreshEventArgs.cs.meta | 11 + .../Controller/CombatFinishFormController.cs | 21 +- .../UI/Game/Context/RepoItemContext.cs | 1 + .../UI/Game/Controller/RepoFormController.cs | 21 +- .../UI/Game/UseCase/RepoFormUseCase.cs | 1 - .../GameMain/Scripts/UI/Game/View/RepoItem.cs | 4 +- .../UI/General/Context/IconAreaContext.cs | 12 + .../General/Context/IconAreaContext.cs.meta | 11 + .../UI/General/Context/RewardItemContext.cs | 15 + .../General/Context/RewardItemContext.cs.meta | 11 + .../Context/RewardSelectFormContext.cs | 11 + .../Context/RewardSelectFormContext.cs.meta | 11 + .../UI/General/Context/TagItemContext.cs | 11 + .../UI/General/Context/TagItemContext.cs.meta | 11 + .../Controller/RewardSelectFormController.cs | 290 +++++ .../RewardSelectFormController.cs.meta | 11 + .../RawData/RewardSelectFormRawData.cs | 11 + .../RawData/RewardSelectFormRawData.cs.meta | 11 + .../RawData/RewardSelectItemRawData.cs | 20 + .../RawData/RewardSelectItemRawData.cs.meta | 11 + .../UseCase/RewardSelectFormUseCase.cs | 338 +++++ .../UseCase/RewardSelectFormUseCase.cs.meta | 11 + .../Scripts/UI/General/View/IconArea.cs | 53 + .../Scripts/UI/General/View/IconArea.cs.meta | 11 + .../Scripts/UI/General/View/RewardItem.cs | 171 +++ .../View/RewardItem.cs.meta} | 0 .../UI/General/View/RewardSelectForm.cs | 167 +++ .../UI/General/View/RewardSelectForm.cs.meta | 11 + .../Scripts/UI/General/View/TagItem.cs | 27 + .../Scripts/UI/General/View/TagItem.cs.meta | 11 + .../Templates/GameScene/View/ShopGoodsItem.cs | 32 - .../UI/UIForms/RewardSelectForm.prefab | 1141 +++++++++++++++++ .../UI/UIForms/RewardSelectForm.prefab.meta | 7 + Assets/GameMain/UI/UIItems/IconArea.prefab | 213 +++ .../GameMain/UI/UIItems/IconArea.prefab.meta | 7 + Assets/GameMain/UI/UIItems/RepoItem.prefab | 238 ++-- Assets/GameMain/UI/UIItems/RewardItem.prefab | 905 +++++++++++++ .../UI/UIItems/RewardItem.prefab.meta | 7 + Assets/GameMain/UI/UIItems/TagItem.prefab | 228 ++++ .../GameMain/UI/UIItems/TagItem.prefab.meta | 7 + 52 files changed, 4495 insertions(+), 133 deletions(-) create mode 100644 Assets/GameMain/Scripts/Event/General.meta create mode 100644 Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs create mode 100644 Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs.meta create mode 100644 Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs create mode 100644 Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs.meta create mode 100644 Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs create mode 100644 Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs create mode 100644 Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs create mode 100644 Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs create mode 100644 Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs create mode 100644 Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs create mode 100644 Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs create mode 100644 Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs create mode 100644 Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs create mode 100644 Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/View/IconArea.cs create mode 100644 Assets/GameMain/Scripts/UI/General/View/IconArea.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/View/RewardItem.cs rename Assets/GameMain/Scripts/UI/{Templates/GameScene/View/ShopGoodsItem.cs.meta => General/View/RewardItem.cs.meta} (100%) create mode 100644 Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs create mode 100644 Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs.meta create mode 100644 Assets/GameMain/Scripts/UI/General/View/TagItem.cs create mode 100644 Assets/GameMain/Scripts/UI/General/View/TagItem.cs.meta delete mode 100644 Assets/GameMain/Scripts/UI/Templates/GameScene/View/ShopGoodsItem.cs create mode 100644 Assets/GameMain/UI/UIForms/RewardSelectForm.prefab create mode 100644 Assets/GameMain/UI/UIForms/RewardSelectForm.prefab.meta create mode 100644 Assets/GameMain/UI/UIItems/IconArea.prefab create mode 100644 Assets/GameMain/UI/UIItems/IconArea.prefab.meta create mode 100644 Assets/GameMain/UI/UIItems/RewardItem.prefab create mode 100644 Assets/GameMain/UI/UIItems/RewardItem.prefab.meta create mode 100644 Assets/GameMain/UI/UIItems/TagItem.prefab create mode 100644 Assets/GameMain/UI/UIItems/TagItem.prefab.meta diff --git a/Assets/GameMain/DataTables/UIForm.txt b/Assets/GameMain/DataTables/UIForm.txt index d9c9b71..6eae9c6 100644 --- a/Assets/GameMain/DataTables/UIForm.txt +++ b/Assets/GameMain/DataTables/UIForm.txt @@ -8,6 +8,7 @@ 110 主界面 MainForm Medium False True 111 仓库UI RepoForm Medium False True 112 详细信息 ItemDescForm Medium True False + 113 奖励选择UI RewardSelectForm Medium False True 130 事件UI EventForm Medium False False 140 战斗信息UI CombatInfoForm Medium False False 141 战斗结束UI CombatFinishForm Medium False True diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatResourceManager.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatResourceManager.cs index 00ca3c9..9120383 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatResourceManager.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatResourceManager.cs @@ -66,6 +66,18 @@ namespace GeometryTD.CustomComponent GameEntry.CombatNode?.ApplyEnemyDropReward(coin, gold); } + public void AddSettlementGold(int gainedGold) + { + int gold = Mathf.Max(0, gainedGold); + if (gold <= 0) + { + return; + } + + GainedGold += gold; + _rewardInventory.Gold += gold; + } + public bool TryRollOutGameItemDrop(int displayPhaseIndex, LevelThemeType themeType) { int phaseIndex = Mathf.Max(1, displayPhaseIndex); @@ -75,12 +87,7 @@ namespace GeometryTD.CustomComponent return false; } - if (!TryPickDropPoolRow(phaseIndex, themeType, out DROutGameDropPool selectedRow)) - { - return false; - } - - if (!TryBuildDropItem(selectedRow, out TowerCompItemData droppedItem)) + if (!TryRollOutGameItem(phaseIndex, themeType, out TowerCompItemData droppedItem)) { return false; } @@ -106,6 +113,71 @@ namespace GeometryTD.CustomComponent return false; } + public bool TryRollOutGameItem(int displayPhaseIndex, LevelThemeType themeType, out TowerCompItemData droppedItem) + { + droppedItem = null; + int phaseIndex = Mathf.Max(1, displayPhaseIndex); + if (!TryPickDropPoolRow(phaseIndex, themeType, out DROutGameDropPool selectedRow)) + { + return false; + } + + return TryBuildDropItem(selectedRow, out droppedItem); + } + + public IReadOnlyList RollSettlementRewardCandidates( + int displayPhaseIndex, + LevelThemeType themeType, + int candidateCount) + { + int resolvedCount = Mathf.Max(0, candidateCount); + if (resolvedCount <= 0) + { + return Array.Empty(); + } + + List candidates = new List(resolvedCount); + HashSet selectedPoolRowIds = new HashSet(); + int maxAttempts = Mathf.Max(resolvedCount * 6, resolvedCount); + int phaseIndex = Mathf.Max(1, displayPhaseIndex); + + int attempts = 0; + while (candidates.Count < resolvedCount && attempts < maxAttempts) + { + attempts++; + if (!TryPickDropPoolRow(phaseIndex, themeType, out DROutGameDropPool selectedRow) || selectedRow == null) + { + break; + } + + if (!selectedPoolRowIds.Add(selectedRow.Id)) + { + continue; + } + + if (!TryBuildDropItem(selectedRow, out TowerCompItemData droppedItem) || droppedItem == null) + { + continue; + } + + candidates.Add(droppedItem); + } + + attempts = 0; + while (candidates.Count < resolvedCount && attempts < maxAttempts) + { + attempts++; + if (!TryRollOutGameItem(phaseIndex, themeType, out TowerCompItemData droppedItem) || droppedItem == null) + { + break; + } + + candidates.Add(droppedItem); + } + + return candidates; + } + private bool TryPickDropPoolRow(int displayPhaseIndex, LevelThemeType themeType, out DROutGameDropPool selectedRow) { selectedRow = null; diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs index 4e1088b..9f53a12 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using GeometryTD.CustomEvent; using GeometryTD.DataTable; @@ -11,6 +12,13 @@ namespace GeometryTD.CustomComponent { public class CombatScheduler { + private const int RewardSelectDisplayCount = 3; + private const float FullBaseHpGoldBonusRate = 0.3f; + private const float HighBaseHpGoldBonusRate = 0.1f; + private const float HighBaseHpThreshold = 0.8f; + private const float MidBaseHpThreshold = 0.5f; + private const float LowBaseHpTowerEndurancePenalty = 10f; + private enum SchedulerState : byte { Idle = 0, @@ -32,9 +40,14 @@ namespace GeometryTD.CustomComponent private EntityComponent _entity; private DRLevel _currentLevel; private CombatFinishFormUseCase _combatFinishFormUseCase; + private RewardSelectFormUseCase _rewardSelectFormUseCase; private SchedulerState _state = SchedulerState.Idle; private bool _initialized; private bool _isFinishAsVictory = true; + private int _pendingFinishDefeatedEnemyCount; + private int _pendingFinishGainedGold; + private BackpackInventoryData _pendingFinishRewardInventory; + private bool _hasPendingFinishSettlement; public bool IsRunning => _state == SchedulerState.WaitingForLoading || _state == SchedulerState.RunningPhase; public bool IsCompleted => _state == SchedulerState.Completed; @@ -63,6 +76,7 @@ namespace GeometryTD.CustomComponent _enemyManager.OnInit(this); _loadSession.OnInit(_entity); EnsureCombatFinishFormUseCaseBound(); + EnsureRewardSelectFormUseCaseBound(); _initialized = true; } @@ -86,6 +100,7 @@ namespace GeometryTD.CustomComponent CleanupAllCombatEntities(); CloseCombatFinishForm(); + CloseRewardSelectForm(); _enemyManager.EndPhase(); _enemyManager.ResetCombatStats(); ResetRuntime(); @@ -156,10 +171,12 @@ namespace GeometryTD.CustomComponent CleanupAllCombatEntities(); CloseCombatFinishForm(); + CloseRewardSelectForm(); _enemyManager.OnDestroy(); ResetRuntime(); _eventBridge.Unbind(); _combatFinishFormUseCase = null; + _rewardSelectFormUseCase = null; _entity = null; _initialized = false; @@ -244,8 +261,6 @@ namespace GeometryTD.CustomComponent private void EnterFinishFlow(string reason, bool isVictory) { int defeatedEnemyCount = _enemyManager.DefeatedEnemyCount; - BackpackInventoryData rewardInventory = _combatResourceManager.GetRewardInventorySnapshot(); - GameEntry.PlayerInventory?.MergeInventory(rewardInventory); // Step 1: stop runtime and clear enemy entities only. _enemyManager.EndPhase(); @@ -253,12 +268,21 @@ namespace GeometryTD.CustomComponent _isFinishAsVictory = isVictory; _enemyManager.CleanupTrackedEnemies(); + bool shouldOpenFullBaseHpRewardSelect = false; + ApplySettlementModifierByBaseHp(isVictory, out shouldOpenFullBaseHpRewardSelect); + PreparePendingFinishSummary(defeatedEnemyCount); + Log.Info( "CombatScheduler entered finish flow. Level={0}. Reason={1}", _currentLevel != null ? _currentLevel.Id : 0, reason); - OpenCombatFinishForm(defeatedEnemyCount, _combatResourceManager.GainedGold, rewardInventory); + if (shouldOpenFullBaseHpRewardSelect && TryOpenFullBaseHpRewardSelect()) + { + return; + } + + CommitPendingSettlementAndOpenFinishForm(); } public void OnEnemyReachedBase(int baseDamage) @@ -296,6 +320,7 @@ namespace GeometryTD.CustomComponent _phaseLoopRuntime.Reset(); _loadSession.Reset(); _combatResourceManager.Reset(); + ClearPendingFinishContext(); _currentLevel = null; _isFinishAsVictory = true; _state = SchedulerState.Idle; @@ -314,6 +339,12 @@ namespace GeometryTD.CustomComponent GameEntry.UIRouter.BindUIUseCase(UIFormType.CombatFinishForm, _combatFinishFormUseCase); } + private void EnsureRewardSelectFormUseCaseBound() + { + _rewardSelectFormUseCase ??= new RewardSelectFormUseCase(); + GameEntry.UIRouter.BindUIUseCase(UIFormType.RewardSelectForm, _rewardSelectFormUseCase); + } + private void OpenCombatFinishForm(int defeatedEnemyCount, int gainedGold, BackpackInventoryData rewardInventory) { EnsureCombatFinishFormUseCaseBound(); @@ -324,6 +355,264 @@ namespace GeometryTD.CustomComponent GameEntry.UIRouter.OpenUI(UIFormType.CombatFinishForm); } + private void PreparePendingFinishSummary(int defeatedEnemyCount) + { + _pendingFinishDefeatedEnemyCount = Mathf.Max(0, defeatedEnemyCount); + _pendingFinishGainedGold = Mathf.Max(0, _combatResourceManager.GainedGold); + _pendingFinishRewardInventory = _combatResourceManager.GetRewardInventorySnapshot(); + _hasPendingFinishSettlement = true; + } + + private void CommitPendingSettlementAndOpenFinishForm() + { + if (!_hasPendingFinishSettlement) + { + return; + } + + BackpackInventoryData rewardInventory = _pendingFinishRewardInventory ?? new BackpackInventoryData(); + int defeatedEnemyCount = _pendingFinishDefeatedEnemyCount; + int gainedGold = _pendingFinishGainedGold; + + GameEntry.PlayerInventory?.MergeInventory(rewardInventory); + OpenCombatFinishForm(defeatedEnemyCount, gainedGold, rewardInventory); + ClearPendingFinishContext(); + } + + private void ClearPendingFinishContext() + { + _pendingFinishDefeatedEnemyCount = 0; + _pendingFinishGainedGold = 0; + _pendingFinishRewardInventory = null; + _hasPendingFinishSettlement = false; + } + + private void ApplySettlementModifierByBaseHp(bool isVictory, out bool shouldOpenFullBaseHpRewardSelect) + { + shouldOpenFullBaseHpRewardSelect = false; + if (!isVictory) + { + return; + } + + int levelRewardGold = _currentLevel != null ? Mathf.Max(0, _currentLevel.RewardGold) : 0; + int currentBaseHp = 0; + int maxBaseHp = 0; + float bonusRate = 0f; + bool appliedLowBaseHpPenalty = false; + + ResolveBaseHpSnapshot(out currentBaseHp, out maxBaseHp); + if (maxBaseHp > 0 && currentBaseHp >= maxBaseHp) + { + bonusRate = FullBaseHpGoldBonusRate; + shouldOpenFullBaseHpRewardSelect = true; + } + else if (maxBaseHp > 0) + { + float hpRate = (float)Mathf.Clamp(currentBaseHp, 0, maxBaseHp) / maxBaseHp; + if (hpRate >= HighBaseHpThreshold) + { + bonusRate = HighBaseHpGoldBonusRate; + } + else if (hpRate < MidBaseHpThreshold) + { + appliedLowBaseHpPenalty = ApplyLowBaseHpPenalty(); + } + } + + int goldForBonusCalculation = Mathf.Max(0, _combatResourceManager.GainedGold) + levelRewardGold; + int bonusGold = bonusRate > 0f ? Mathf.FloorToInt(goldForBonusCalculation * bonusRate) : 0; + int settlementGold = levelRewardGold + bonusGold; + _combatResourceManager.AddSettlementGold(settlementGold); + + Log.Info( + "Combat settlement resolved. BaseHp={0}/{1}, LevelReward={2}, BonusRate={3:P0}, BonusGold={4}, FullHpRewardSelect={5}, LowHpPenalty={6}.", + currentBaseHp, + maxBaseHp, + levelRewardGold, + bonusRate, + bonusGold, + shouldOpenFullBaseHpRewardSelect, + appliedLowBaseHpPenalty); + } + + private void ResolveBaseHpSnapshot(out int currentBaseHp, out int maxBaseHp) + { + currentBaseHp = 0; + maxBaseHp = _currentLevel != null ? Mathf.Max(0, _currentLevel.BaseHp) : 0; + + CombatNodeComponent combatNode = GameEntry.CombatNode; + if (combatNode != null) + { + currentBaseHp = Mathf.Max(0, combatNode.CurrentBaseHp); + if (maxBaseHp <= 0 && combatNode.CurrentLevel != null) + { + maxBaseHp = Mathf.Max(0, combatNode.CurrentLevel.BaseHp); + } + } + + if (maxBaseHp > 0) + { + currentBaseHp = Mathf.Clamp(currentBaseHp, 0, maxBaseHp); + } + } + + private bool ApplyLowBaseHpPenalty() + { + PlayerInventoryComponent inventory = GameEntry.PlayerInventory; + if (inventory == null) + { + return false; + } + + int affectedTowerCount = inventory.ReduceAllTowerEndurance(LowBaseHpTowerEndurancePenalty); + return affectedTowerCount > 0; + } + + private bool TryOpenFullBaseHpRewardSelect() + { + IReadOnlyList candidateItems = _combatResourceManager.RollSettlementRewardCandidates( + _phaseLoopRuntime.DisplayPhaseIndex, + ResolveCurrentThemeType(), + RewardSelectDisplayCount); + if (candidateItems == null || candidateItems.Count <= 0) + { + return false; + } + + List rewardPool = new List(candidateItems.Count); + for (int i = 0; i < candidateItems.Count; i++) + { + TowerCompItemData item = candidateItems[i]; + if (item == null) + { + continue; + } + + rewardPool.Add(BuildRewardSelectRawData(item)); + } + + if (rewardPool.Count <= 0) + { + return false; + } + + EnsureRewardSelectFormUseCaseBound(); + _rewardSelectFormUseCase.SetCallbacks(OnFullBaseHpRewardSelected, OnFullBaseHpRewardGiveUp); + _rewardSelectFormUseCase.ConfigureRewardPool( + rewardPool, + displayCount: RewardSelectDisplayCount, + refreshCost: 0, + allowRefreshOnce: false, + allowGiveUp: false, + tipText: "基地满血奖励:请选择 1 个组件"); + + RewardSelectFormRawData rawData = _rewardSelectFormUseCase.CreateInitialModel(); + if (rawData == null || rawData.RewardItems == null || rawData.RewardItems.Length <= 0) + { + return false; + } + + GameEntry.UIRouter.OpenUI(UIFormType.RewardSelectForm, rawData); + return true; + } + + private void OnFullBaseHpRewardSelected(RewardSelectItemRawData selectedReward) + { + if (_pendingFinishRewardInventory != null && selectedReward?.SourceItem != null) + { + TryAppendRewardComponent(_pendingFinishRewardInventory, selectedReward.SourceItem); + } + + CommitPendingSettlementAndOpenFinishForm(); + } + + private void OnFullBaseHpRewardGiveUp() + { + CommitPendingSettlementAndOpenFinishForm(); + } + + private static bool TryAppendRewardComponent(BackpackInventoryData rewardInventory, TowerCompItemData selectedItem) + { + if (rewardInventory == null || selectedItem == null) + { + return false; + } + + if (selectedItem is MuzzleCompItemData muzzleComp) + { + rewardInventory.MuzzleComponents.Add(muzzleComp); + return true; + } + + if (selectedItem is BearingCompItemData bearingComp) + { + rewardInventory.BearingComponents.Add(bearingComp); + return true; + } + + if (selectedItem is BaseCompItemData baseComp) + { + rewardInventory.BaseComponents.Add(baseComp); + return true; + } + + return false; + } + + private static RewardSelectItemRawData BuildRewardSelectRawData(TowerCompItemData item) + { + return new RewardSelectItemRawData + { + RewardId = item.InstanceId, + SlotType = item.SlotType, + Title = item.Name, + TypeText = BuildRewardTypeText(item.SlotType), + Description = BuildRewardDescription(item), + Rarity = item.Rarity, + Tags = item.Tags != null ? (TagType[])item.Tags.Clone() : Array.Empty(), + Icon = null, + IsSelectable = true, + SourceItem = item + }; + } + + private static string BuildRewardTypeText(TowerCompSlotType slotType) + { + return slotType switch + { + TowerCompSlotType.Muzzle => "Muzzle Component", + TowerCompSlotType.Bearing => "Bearing Component", + TowerCompSlotType.Base => "Base Component", + TowerCompSlotType.Accessory => "Accessory", + _ => "Component" + }; + } + + private static string BuildRewardDescription(TowerCompItemData item) + { + if (item is MuzzleCompItemData muzzle) + { + int damage = muzzle.AttackDamage != null && muzzle.AttackDamage.Length > 0 ? muzzle.AttackDamage[0] : 0; + return $"Damage: {damage}, Spread: {muzzle.DamageRandomRate:P0}"; + } + + if (item is BearingCompItemData bearing) + { + float range = bearing.AttackRange != null && bearing.AttackRange.Length > 0 ? bearing.AttackRange[0] : 0f; + float rotateSpeed = bearing.RotateSpeed != null && bearing.RotateSpeed.Length > 0 ? bearing.RotateSpeed[0] : 0f; + return $"Range: {range:0.##}, Rotate Speed: {rotateSpeed:0.##}"; + } + + if (item is BaseCompItemData baseComp) + { + float attackSpeed = baseComp.AttackSpeed != null && baseComp.AttackSpeed.Length > 0 ? baseComp.AttackSpeed[0] : 0f; + return $"Attack Speed: {attackSpeed:0.##}, Property: {baseComp.AttackPropertyType}"; + } + + return string.Empty; + } + public void OnEnemyDefeatedRewardResolved(int gainedCoin, int gainedGold) { _combatResourceManager.AddEnemyDefeatedReward(gainedCoin, gainedGold); @@ -358,6 +647,11 @@ namespace GeometryTD.CustomComponent GameEntry.UIRouter.CloseUI(UIFormType.CombatFinishForm); } + private void CloseRewardSelectForm() + { + GameEntry.UIRouter.CloseUI(UIFormType.RewardSelectForm); + } + public bool OnCombatFinishReturnRequested() { if (_state != SchedulerState.WaitingForFinishReturn) @@ -368,6 +662,7 @@ namespace GeometryTD.CustomComponent // Step 2: clear remaining map/UI resources and close finish form. _loadSession.Cleanup(); CloseCombatFinishForm(); + CloseRewardSelectForm(); _state = SchedulerState.Completed; GameEntry.CombatNode?.OnCombatEndedByScheduler(_isFinishAsVictory); return true; @@ -380,6 +675,7 @@ namespace GeometryTD.CustomComponent _enemyManager.EndPhase(); CleanupAllCombatEntities(); CloseCombatFinishForm(); + CloseRewardSelectForm(); ResetRuntime(); return false; } @@ -397,6 +693,7 @@ namespace GeometryTD.CustomComponent _enemyManager.EndPhase(); CleanupAllCombatEntities(); CloseCombatFinishForm(); + CloseRewardSelectForm(); GameEntry.CombatNode?.OnCombatEndedByScheduler(false); } diff --git a/Assets/GameMain/Scripts/CustomComponent/CombatNode/EnemyManager/EnemyManager.cs b/Assets/GameMain/Scripts/CustomComponent/CombatNode/EnemyManager/EnemyManager.cs index e5efc83..3c99985 100644 --- a/Assets/GameMain/Scripts/CustomComponent/CombatNode/EnemyManager/EnemyManager.cs +++ b/Assets/GameMain/Scripts/CustomComponent/CombatNode/EnemyManager/EnemyManager.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using GameFramework.Event; using GeometryTD.DataTable; -using GeometryTD.Definition; using GeometryTD.Entity; using GeometryTD.Entity.EntityData; using UnityEngine; diff --git a/Assets/GameMain/Scripts/CustomComponent/PlayerInventoryComponent.cs b/Assets/GameMain/Scripts/CustomComponent/PlayerInventoryComponent.cs index efd7bcd..ad0dea9 100644 --- a/Assets/GameMain/Scripts/CustomComponent/PlayerInventoryComponent.cs +++ b/Assets/GameMain/Scripts/CustomComponent/PlayerInventoryComponent.cs @@ -171,6 +171,38 @@ namespace GeometryTD.CustomComponent _inventory.Gold += resolvedGain; } + public int ReduceAllTowerEndurance(float enduranceLoss) + { + EnsureInitialized(); + float resolvedLoss = Mathf.Max(0f, enduranceLoss); + if (resolvedLoss <= 0f || _inventory.Towers == null || _inventory.Towers.Count <= 0) + { + return 0; + } + + int affectedCount = 0; + for (int i = 0; i < _inventory.Towers.Count; i++) + { + DefenseTowerItemData tower = _inventory.Towers[i]; + if (tower == null) + { + continue; + } + + float originalEndurance = tower.Endurance; + float nextEndurance = Mathf.Clamp(originalEndurance - resolvedLoss, 0f, 100f); + if (nextEndurance >= originalEndurance) + { + continue; + } + + tower.Endurance = nextEndurance; + affectedCount++; + } + + return affectedCount; + } + private void EnsureInitialized() { if (_initialized) diff --git a/Assets/GameMain/Scripts/Definition/Enum/UIFormType.cs b/Assets/GameMain/Scripts/Definition/Enum/UIFormType.cs index ad237d6..40a9484 100644 --- a/Assets/GameMain/Scripts/Definition/Enum/UIFormType.cs +++ b/Assets/GameMain/Scripts/Definition/Enum/UIFormType.cs @@ -31,12 +31,22 @@ /// 主界面。 /// MainForm = 110, - + /// /// 仓库界面。 /// RepoForm = 111, + /// + /// 道具详细信息界面。 + /// + ItemDescForm = 112, + + /// + /// 奖励三选一界面。 + /// + RewardSelectForm = 113, + /// /// 事件节点界面。 /// @@ -51,15 +61,15 @@ /// 战斗结算界面。 /// CombatFinishForm = 141, - + /// /// 战斗选择界面 /// CombatSelectForm = 142, - + /// /// 测试菜单。 /// TestMenuForm = 200, } -} +} \ No newline at end of file diff --git a/Assets/GameMain/Scripts/Event/General.meta b/Assets/GameMain/Scripts/Event/General.meta new file mode 100644 index 0000000..b5a8a7b --- /dev/null +++ b/Assets/GameMain/Scripts/Event/General.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 775ed8967a23327419c664150ce1fad3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs b/Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs new file mode 100644 index 0000000..9289192 --- /dev/null +++ b/Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs @@ -0,0 +1,21 @@ +using GameFramework; +using GameFramework.Event; + +namespace GeometryTD.CustomEvent +{ + public class RewardSelectGiveUpEventArgs : GameEventArgs + { + public static int EventId => typeof(RewardSelectGiveUpEventArgs).GetHashCode(); + + public override int Id => EventId; + + public static RewardSelectGiveUpEventArgs Create() + { + return ReferencePool.Acquire(); + } + + public override void Clear() + { + } + } +} diff --git a/Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs.meta b/Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs.meta new file mode 100644 index 0000000..8cded31 --- /dev/null +++ b/Assets/GameMain/Scripts/Event/General/RewardSelectGiveUpEventArgs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36ac796e2a3b8054fb6c8a62fa83a961 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs b/Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs new file mode 100644 index 0000000..80d46ba --- /dev/null +++ b/Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs @@ -0,0 +1,26 @@ +using GameFramework; +using GameFramework.Event; + +namespace GeometryTD.CustomEvent +{ + public class RewardSelectItemSelectedEventArgs : GameEventArgs + { + public static int EventId => typeof(RewardSelectItemSelectedEventArgs).GetHashCode(); + + public override int Id => EventId; + + public int SelectedIndex { get; private set; } = -1; + + public static RewardSelectItemSelectedEventArgs Create(int selectedIndex) + { + RewardSelectItemSelectedEventArgs args = ReferencePool.Acquire(); + args.SelectedIndex = selectedIndex; + return args; + } + + public override void Clear() + { + SelectedIndex = -1; + } + } +} diff --git a/Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs.meta b/Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs.meta new file mode 100644 index 0000000..a0cebaa --- /dev/null +++ b/Assets/GameMain/Scripts/Event/General/RewardSelectItemSelectedEventArgs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 926df4c8b4422c84496ee81b0a69963c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs b/Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs new file mode 100644 index 0000000..aaa01df --- /dev/null +++ b/Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs @@ -0,0 +1,21 @@ +using GameFramework; +using GameFramework.Event; + +namespace GeometryTD.CustomEvent +{ + public class RewardSelectRefreshEventArgs : GameEventArgs + { + public static int EventId => typeof(RewardSelectRefreshEventArgs).GetHashCode(); + + public override int Id => EventId; + + public static RewardSelectRefreshEventArgs Create() + { + return ReferencePool.Acquire(); + } + + public override void Clear() + { + } + } +} diff --git a/Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs.meta b/Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs.meta new file mode 100644 index 0000000..f2ff9c3 --- /dev/null +++ b/Assets/GameMain/Scripts/Event/General/RewardSelectRefreshEventArgs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3e2fd7e3e22b2d4399f90e7d5064f50 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/Combat/Controller/CombatFinishFormController.cs b/Assets/GameMain/Scripts/UI/Combat/Controller/CombatFinishFormController.cs index 95b739b..4c526e4 100644 --- a/Assets/GameMain/Scripts/UI/Combat/Controller/CombatFinishFormController.cs +++ b/Assets/GameMain/Scripts/UI/Combat/Controller/CombatFinishFormController.cs @@ -111,7 +111,8 @@ namespace GeometryTD.UI { Title = $"[Tower] {tower.Name} ({tower.Rarity})", InstanceId = tower.InstanceId, - ComponentSlotType = TowerCompSlotType.None + ComponentSlotType = TowerCompSlotType.None, + IconAreaContext = BuildIconAreaContext(tower.Rarity) }); } } @@ -130,7 +131,8 @@ namespace GeometryTD.UI { Title = $"[Muzzle] {item.Name} ({item.Rarity})", InstanceId = item.InstanceId, - ComponentSlotType = TowerCompSlotType.Muzzle + ComponentSlotType = TowerCompSlotType.Muzzle, + IconAreaContext = BuildIconAreaContext(item.Rarity) }); } } @@ -149,7 +151,8 @@ namespace GeometryTD.UI { Title = $"[Bearing] {item.Name} ({item.Rarity})", InstanceId = item.InstanceId, - ComponentSlotType = TowerCompSlotType.Bearing + ComponentSlotType = TowerCompSlotType.Bearing, + IconAreaContext = BuildIconAreaContext(item.Rarity) }); } } @@ -168,7 +171,8 @@ namespace GeometryTD.UI { Title = $"[Base] {item.Name} ({item.Rarity})", InstanceId = item.InstanceId, - ComponentSlotType = TowerCompSlotType.Base + ComponentSlotType = TowerCompSlotType.Base, + IconAreaContext = BuildIconAreaContext(item.Rarity) }); } } @@ -176,6 +180,15 @@ namespace GeometryTD.UI return itemContexts.ToArray(); } + private static IconAreaContext BuildIconAreaContext(RarityType rarity) + { + return new IconAreaContext + { + Rarity = rarity, + Icon = null + }; + } + private void OnCombatFinishReturnButtonClicked(object sender, GameEventArgs e) { if (!(sender is CombatFinishForm) || !(e is CombatFinishReturnEventArgs)) diff --git a/Assets/GameMain/Scripts/UI/Game/Context/RepoItemContext.cs b/Assets/GameMain/Scripts/UI/Game/Context/RepoItemContext.cs index e0a6ac9..7d51d2d 100644 --- a/Assets/GameMain/Scripts/UI/Game/Context/RepoItemContext.cs +++ b/Assets/GameMain/Scripts/UI/Game/Context/RepoItemContext.cs @@ -7,5 +7,6 @@ namespace GeometryTD.UI public string Title; public long InstanceId; public TowerCompSlotType ComponentSlotType; + public IconAreaContext IconAreaContext; } } diff --git a/Assets/GameMain/Scripts/UI/Game/Controller/RepoFormController.cs b/Assets/GameMain/Scripts/UI/Game/Controller/RepoFormController.cs index 82d3b89..1c2d473 100644 --- a/Assets/GameMain/Scripts/UI/Game/Controller/RepoFormController.cs +++ b/Assets/GameMain/Scripts/UI/Game/Controller/RepoFormController.cs @@ -93,7 +93,8 @@ namespace GeometryTD.UI { Title = $"[Tower] {tower.Name} ({tower.Rarity})", InstanceId = tower.InstanceId, - ComponentSlotType = TowerCompSlotType.None + ComponentSlotType = TowerCompSlotType.None, + IconAreaContext = BuildIconAreaContext(tower.Rarity) }); } } @@ -106,7 +107,8 @@ namespace GeometryTD.UI { Title = $"[Muzzle] {item.Name} ({item.Rarity})", InstanceId = item.InstanceId, - ComponentSlotType = TowerCompSlotType.Muzzle + ComponentSlotType = TowerCompSlotType.Muzzle, + IconAreaContext = BuildIconAreaContext(item.Rarity) }); } } @@ -119,7 +121,8 @@ namespace GeometryTD.UI { Title = $"[Bearing] {item.Name} ({item.Rarity})", InstanceId = item.InstanceId, - ComponentSlotType = TowerCompSlotType.Bearing + ComponentSlotType = TowerCompSlotType.Bearing, + IconAreaContext = BuildIconAreaContext(item.Rarity) }); } } @@ -132,7 +135,8 @@ namespace GeometryTD.UI { Title = $"[Base] {item.Name} ({item.Rarity})", InstanceId = item.InstanceId, - ComponentSlotType = TowerCompSlotType.Base + ComponentSlotType = TowerCompSlotType.Base, + IconAreaContext = BuildIconAreaContext(item.Rarity) }); } } @@ -158,6 +162,15 @@ namespace GeometryTD.UI _itemContextMap[itemContext.InstanceId] = itemContext; } + private static IconAreaContext BuildIconAreaContext(RarityType rarity) + { + return new IconAreaContext + { + Rarity = rarity, + Icon = null + }; + } + private void OnRepoItemSelected(object sender, GameEventArgs e) { if (!(e is RepoItemSelectedEventArgs args)) diff --git a/Assets/GameMain/Scripts/UI/Game/UseCase/RepoFormUseCase.cs b/Assets/GameMain/Scripts/UI/Game/UseCase/RepoFormUseCase.cs index 9b3f188..7d1de35 100644 --- a/Assets/GameMain/Scripts/UI/Game/UseCase/RepoFormUseCase.cs +++ b/Assets/GameMain/Scripts/UI/Game/UseCase/RepoFormUseCase.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using GeometryTD.Definition; namespace GeometryTD.UI diff --git a/Assets/GameMain/Scripts/UI/Game/View/RepoItem.cs b/Assets/GameMain/Scripts/UI/Game/View/RepoItem.cs index 368404c..ff24149 100644 --- a/Assets/GameMain/Scripts/UI/Game/View/RepoItem.cs +++ b/Assets/GameMain/Scripts/UI/Game/View/RepoItem.cs @@ -2,7 +2,6 @@ using GeometryTD.CustomEvent; using TMPro; using UnityEngine; using UnityEngine.UI; -using UnityGameFramework.Runtime; namespace GeometryTD.UI { @@ -10,6 +9,7 @@ namespace GeometryTD.UI { [SerializeField] private TMP_Text _titleText; [SerializeField] private Image _highlightImage; + [SerializeField] private IconArea _iconArea; private static readonly Color NormalColor = new Color32(40, 40, 40, 180); private static readonly Color SelectedColor = new Color32(255, 216, 102, 255); @@ -31,6 +31,8 @@ namespace GeometryTD.UI _titleText.text = context.Title ?? string.Empty; } + _iconArea.OnInit(context.IconAreaContext); + SetSelected(false); } diff --git a/Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs b/Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs new file mode 100644 index 0000000..2f23617 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs @@ -0,0 +1,12 @@ +using GeometryTD.Definition; +using GeometryTD.UI; +using UnityEngine; + +namespace GeometryTD.UI +{ + public class IconAreaContext : UIContext + { + public RarityType Rarity; + public Sprite Icon; + } +} \ No newline at end of file diff --git a/Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs.meta b/Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs.meta new file mode 100644 index 0000000..21f42c2 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/IconAreaContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5d39fc6e1ad1fe4ba9d2454eb9a0cb3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs b/Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs new file mode 100644 index 0000000..8a1801a --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs @@ -0,0 +1,15 @@ +namespace GeometryTD.UI +{ + public class RewardItemContext : UIContext + { + public int Index; + public long RewardId; + public IconAreaContext IconArea; + public string Title; + public string TypeText; + public string Description; + public TagItemContext[] Tags; + public bool IsSelectable; + public object UserData; + } +} diff --git a/Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs.meta b/Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs.meta new file mode 100644 index 0000000..9ca01c4 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/RewardItemContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ab52d2f24634cd47bd8344b69dc6ee9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs b/Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs new file mode 100644 index 0000000..0bfc190 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs @@ -0,0 +1,11 @@ +namespace GeometryTD.UI +{ + public class RewardSelectFormContext : UIContext + { + public string TipText; + public string RefreshButtonText; + public bool CanRefresh; + public bool CanGiveUp; + public RewardItemContext[] RewardItems; + } +} \ No newline at end of file diff --git a/Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs.meta b/Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs.meta new file mode 100644 index 0000000..617d8e8 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/RewardSelectFormContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6f4ec685dcc5a07458a149792aa422f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs b/Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs new file mode 100644 index 0000000..ff8ae6e --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace GeometryTD.UI +{ + public class TagItemContext : UIContext + { + public string TagName; + } +} \ No newline at end of file diff --git a/Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs.meta b/Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs.meta new file mode 100644 index 0000000..df22c4a --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Context/TagItemContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83fe4616261e1614e8fc6c049cbe4606 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs b/Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs new file mode 100644 index 0000000..ba5431d --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs @@ -0,0 +1,290 @@ +using System; +using GeometryTD.CustomEvent; +using GeometryTD.DataTable; +using GeometryTD.Definition; +using GameFramework.Event; +using UnityEngine; +using UnityGameFramework.Runtime; + +namespace GeometryTD.UI +{ + public class RewardSelectFormController : UIFormControllerCommonBase + { + private RewardSelectFormUseCase _useCase; + + protected override UIFormType UIFormTypeId => UIFormType.RewardSelectForm; + + protected override void RefreshUI(RewardSelectForm form, RewardSelectFormContext context) + { + form.RefreshUI(context); + } + + protected override void SubscribeCustomEvents() + { + GameEntry.Event.Subscribe(RewardSelectItemSelectedEventArgs.EventId, OnRewardSelected); + GameEntry.Event.Subscribe(RewardSelectRefreshEventArgs.EventId, OnRefreshClicked); + GameEntry.Event.Subscribe(RewardSelectGiveUpEventArgs.EventId, OnGiveUpClicked); + } + + protected override void UnsubscribeCustomEvents() + { + GameEntry.Event.Unsubscribe(RewardSelectItemSelectedEventArgs.EventId, OnRewardSelected); + GameEntry.Event.Unsubscribe(RewardSelectRefreshEventArgs.EventId, OnRefreshClicked); + GameEntry.Event.Unsubscribe(RewardSelectGiveUpEventArgs.EventId, OnGiveUpClicked); + } + + public override int? OpenUI(object userData = null) + { + if (userData is RewardSelectFormContext context) + { + return OpenUIInternal(context); + } + + if (userData is RewardSelectFormRawData rawDataFromUserData) + { + return OpenUI(rawDataFromUserData); + } + + if (userData != null) + { + Log.Warning("RewardSelectFormController.OpenUI() userData type is invalid."); + return null; + } + + if (_useCase == null) + { + Log.Error("RewardSelectFormController.OpenUI() useCase is null."); + return null; + } + + RewardSelectFormRawData rawData = _useCase.CreateInitialModel(); + return OpenUI(rawData); + } + + public int? OpenUI(RewardSelectFormRawData rawData) + { + RewardSelectFormContext context = BuildContext(rawData); + return OpenUIInternal(context); + } + + public override void BindUseCase(IUIUseCase useCase) + { + if (!(useCase is RewardSelectFormUseCase rewardSelectUseCase)) + { + Log.Error("RewardSelectFormController.BindUseCase() useCase is invalid."); + return; + } + + _useCase = rewardSelectUseCase; + } + + private static RewardSelectFormContext BuildContext(RewardSelectFormRawData rawData) + { + if (rawData == null) + { + return null; + } + + return new RewardSelectFormContext + { + TipText = string.IsNullOrWhiteSpace(rawData.TipText) ? "Select one reward" : rawData.TipText, + RefreshButtonText = BuildRefreshButtonText(rawData.RefreshCost, rawData.CanRefresh), + CanRefresh = rawData.CanRefresh, + CanGiveUp = rawData.CanGiveUp, + RewardItems = BuildRewardItemContexts(rawData.RewardItems) + }; + } + + private static string BuildRefreshButtonText(int refreshCost, bool canRefresh) + { + if (!canRefresh) + { + return "Refreshed"; + } + + if (refreshCost <= 0) + { + return "Refresh"; + } + + return $"Refresh -{refreshCost}"; + } + + private static RewardItemContext[] BuildRewardItemContexts(RewardSelectItemRawData[] rawItems) + { + if (rawItems == null || rawItems.Length <= 0) + { + return System.Array.Empty(); + } + + RewardItemContext[] contexts = new RewardItemContext[rawItems.Length]; + for (int i = 0; i < rawItems.Length; i++) + { + RewardSelectItemRawData rawItem = rawItems[i]; + if (rawItem == null) + { + continue; + } + + contexts[i] = new RewardItemContext + { + Index = i, + RewardId = rawItem.RewardId, + IconArea = new IconAreaContext + { + Icon = rawItem.Icon, + Rarity = rawItem.Rarity + }, + Title = rawItem.Title ?? string.Empty, + TypeText = ResolveTypeText(rawItem), + Description = rawItem.Description ?? string.Empty, + Tags = BuildTagContexts(rawItem.Tags), + IsSelectable = rawItem.IsSelectable, + UserData = rawItem.UserData + }; + } + + return contexts; + } + + private static string ResolveTypeText(RewardSelectItemRawData rawItem) + { + if (!string.IsNullOrWhiteSpace(rawItem.TypeText)) + { + return rawItem.TypeText; + } + + return rawItem.SlotType switch + { + TowerCompSlotType.Muzzle => "Muzzle Component", + TowerCompSlotType.Bearing => "Bearing Component", + TowerCompSlotType.Base => "Base Component", + TowerCompSlotType.Accessory => "Accessory", + _ => "Component" + }; + } + + private static TagItemContext[] BuildTagContexts(TagType[] tags) + { + if (tags == null || tags.Length <= 0) + { + return System.Array.Empty(); + } + + TagItemContext[] contexts = new TagItemContext[tags.Length]; + for (int i = 0; i < tags.Length; i++) + { + TagType tagType = tags[i]; + contexts[i] = new TagItemContext + { + TagName = ResolveTagName(tagType) + }; + } + + return contexts; + } + + private static string ResolveTagName(TagType tagType) + { + if (tagType == TagType.None) + { + return string.Empty; + } + + var tagTable = GameEntry.DataTable.GetDataTable(); + if (tagTable != null) + { + DRTag tagRow = tagTable.GetDataRow((int)tagType); + if (tagRow != null && !string.IsNullOrWhiteSpace(tagRow.Name)) + { + return tagRow.Name; + } + } + + return tagType.ToString(); + } + + private void OnRewardSelected(object sender, GameEventArgs e) + { + if (!IsEventFromCurrentForm(sender) || !(e is RewardSelectItemSelectedEventArgs args)) + { + return; + } + + if (_useCase == null) + { + return; + } + + RewardSelectFormRawData nextRawData = _useCase.SelectReward(args.SelectedIndex); + if (nextRawData == null) + { + CloseUI(); + return; + } + + OpenUI(nextRawData); + } + + private void OnRefreshClicked(object sender, GameEventArgs e) + { + if (!IsEventFromCurrentForm(sender) || !(e is RewardSelectRefreshEventArgs)) + { + return; + } + + if (_useCase == null) + { + return; + } + + RewardSelectFormRawData nextRawData = _useCase.TryRefresh(); + if (nextRawData == null) + { + CloseUI(); + return; + } + + OpenUI(nextRawData); + } + + private void OnGiveUpClicked(object sender, GameEventArgs e) + { + if (!IsEventFromCurrentForm(sender) || !(e is RewardSelectGiveUpEventArgs)) + { + return; + } + + if (_useCase == null) + { + return; + } + + if (_useCase.TryGiveUp()) + { + CloseUI(); + } + } + + private bool IsEventFromCurrentForm(object sender) + { + if (Form == null) + { + return false; + } + + if (ReferenceEquals(sender, Form)) + { + return true; + } + + if (sender is Component component) + { + RewardSelectForm ownerForm = component.GetComponentInParent(); + return ownerForm == Form; + } + + return false; + } + } +} diff --git a/Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs.meta b/Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs.meta new file mode 100644 index 0000000..c39956e --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/Controller/RewardSelectFormController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d4d6617e96d6984dac4f279d4f194e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs new file mode 100644 index 0000000..0c972c8 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs @@ -0,0 +1,11 @@ +namespace GeometryTD.UI +{ + public class RewardSelectFormRawData + { + public string TipText; + public RewardSelectItemRawData[] RewardItems; + public int RefreshCost; + public bool CanRefresh; + public bool CanGiveUp; + } +} diff --git a/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs.meta b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs.meta new file mode 100644 index 0000000..76320c5 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectFormRawData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 642bc21ab1e2948468912ffa6e051a6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs new file mode 100644 index 0000000..12e28f1 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs @@ -0,0 +1,20 @@ +using GeometryTD.Definition; +using UnityEngine; + +namespace GeometryTD.UI +{ + public class RewardSelectItemRawData + { + public long RewardId; + public TowerCompSlotType SlotType; + public string Title; + public string TypeText; + public string Description; + public RarityType Rarity; + public TagType[] Tags; + public Sprite Icon; + public bool IsSelectable = true; + public TowerCompItemData SourceItem; + public object UserData; + } +} diff --git a/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs.meta b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs.meta new file mode 100644 index 0000000..4c0c871 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/RawData/RewardSelectItemRawData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d00c968c551de7b4a8d8841cf5e98d66 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs b/Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs new file mode 100644 index 0000000..57f3ea8 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs @@ -0,0 +1,338 @@ +using System; +using System.Collections.Generic; +using GeometryTD.Definition; +using UnityEngine; +using Random = UnityEngine.Random; + +namespace GeometryTD.UI +{ + public class RewardSelectFormUseCase : IUIUseCase + { + private readonly List _rewardPool = new List(); + + private RewardSelectFormRawData _currentModel; + private Action _onRewardSelected; + private Action _onGiveUp; + + private int _displayCount = 3; + private int _refreshCost; + private bool _allowRefreshOnce = true; + private bool _allowGiveUp = true; + private bool _hasRefreshed; + private string _tipText = "Select one reward"; + + public RewardSelectFormUseCase() + { + ConfigureRewardPool(BuildDefaultRewardPool()); + } + + public void ConfigureRewardPool( + IReadOnlyList rewardPool, + int displayCount = 3, + int refreshCost = 0, + bool allowRefreshOnce = true, + bool allowGiveUp = true, + string tipText = null) + { + _rewardPool.Clear(); + if (rewardPool != null) + { + for (int i = 0; i < rewardPool.Count; i++) + { + RewardSelectItemRawData item = rewardPool[i]; + if (item == null) + { + continue; + } + + _rewardPool.Add(CloneRawItem(item)); + } + } + + _displayCount = Mathf.Max(1, displayCount); + _refreshCost = Mathf.Max(0, refreshCost); + _allowRefreshOnce = allowRefreshOnce; + _allowGiveUp = allowGiveUp; + _tipText = string.IsNullOrWhiteSpace(tipText) ? "Select one reward" : tipText; + _hasRefreshed = false; + _currentModel = null; + } + + public void SetCallbacks(Action onRewardSelected, Action onGiveUp = null) + { + _onRewardSelected = onRewardSelected; + _onGiveUp = onGiveUp; + } + + public RewardSelectFormRawData CreateInitialModel() + { + _hasRefreshed = false; + _currentModel = BuildModel(); + return _currentModel; + } + + public RewardSelectFormRawData TryRefresh() + { + if (_currentModel == null) + { + return null; + } + + if (!CanRefreshInternal()) + { + return _currentModel; + } + + if (!TryConsumeRefreshCost()) + { + _currentModel.CanRefresh = false; + return _currentModel; + } + + _hasRefreshed = true; + _currentModel = BuildModel(); + return _currentModel; + } + + public RewardSelectFormRawData SelectReward(int selectedIndex) + { + if (_currentModel?.RewardItems == null || _currentModel.RewardItems.Length <= 0) + { + return null; + } + + if (selectedIndex < 0 || selectedIndex >= _currentModel.RewardItems.Length) + { + return _currentModel; + } + + RewardSelectItemRawData selectedReward = _currentModel.RewardItems[selectedIndex]; + _onRewardSelected?.Invoke(selectedReward); + + _currentModel = null; + return null; + } + + public bool TryGiveUp() + { + if (!_allowGiveUp) + { + return false; + } + + _onGiveUp?.Invoke(); + _currentModel = null; + return true; + } + + private RewardSelectFormRawData BuildModel() + { + RewardSelectItemRawData[] selectedRewards = SelectRewards(); + + return new RewardSelectFormRawData + { + TipText = _tipText, + RewardItems = selectedRewards, + RefreshCost = _refreshCost, + CanRefresh = selectedRewards.Length > 0 && CanRefreshInternal(), + CanGiveUp = _allowGiveUp + }; + } + + private RewardSelectItemRawData[] SelectRewards() + { + if (_rewardPool.Count <= 0) + { + return Array.Empty(); + } + + int finalCount = Mathf.Clamp(_displayCount, 1, _rewardPool.Count); + int[] indexes = new int[_rewardPool.Count]; + for (int i = 0; i < indexes.Length; i++) + { + indexes[i] = i; + } + + for (int i = 0; i < finalCount; i++) + { + int randomIndex = Random.Range(i, indexes.Length); + (indexes[i], indexes[randomIndex]) = (indexes[randomIndex], indexes[i]); + } + + RewardSelectItemRawData[] results = new RewardSelectItemRawData[finalCount]; + for (int i = 0; i < finalCount; i++) + { + RewardSelectItemRawData source = _rewardPool[indexes[i]]; + results[i] = CloneRawItem(source); + } + + return results; + } + + private bool CanRefreshInternal() + { + if (!_allowRefreshOnce || _hasRefreshed) + { + return false; + } + + return CanPayRefreshCost(); + } + + private bool CanPayRefreshCost() + { + if (_refreshCost <= 0) + { + return true; + } + + if (GameEntry.PlayerInventory == null) + { + return true; + } + + return GameEntry.PlayerInventory.Gold >= _refreshCost; + } + + private bool TryConsumeRefreshCost() + { + if (_refreshCost <= 0) + { + return true; + } + + if (GameEntry.PlayerInventory == null) + { + return true; + } + + return GameEntry.PlayerInventory.TryConsumeGold(_refreshCost); + } + + private static List BuildDefaultRewardPool() + { + BackpackInventoryData inventory = RepoFormUseCase.SampleInventory(); + List rewards = new List(); + + if (inventory?.MuzzleComponents != null) + { + for (int i = 0; i < inventory.MuzzleComponents.Count; i++) + { + MuzzleCompItemData item = inventory.MuzzleComponents[i]; + if (item == null) + { + continue; + } + + rewards.Add(BuildRawItem(item)); + } + } + + if (inventory?.BearingComponents != null) + { + for (int i = 0; i < inventory.BearingComponents.Count; i++) + { + BearingCompItemData item = inventory.BearingComponents[i]; + if (item == null) + { + continue; + } + + rewards.Add(BuildRawItem(item)); + } + } + + if (inventory?.BaseComponents != null) + { + for (int i = 0; i < inventory.BaseComponents.Count; i++) + { + BaseCompItemData item = inventory.BaseComponents[i]; + if (item == null) + { + continue; + } + + rewards.Add(BuildRawItem(item)); + } + } + + return rewards; + } + + private static RewardSelectItemRawData BuildRawItem(TowerCompItemData item) + { + return new RewardSelectItemRawData + { + RewardId = item.InstanceId, + SlotType = item.SlotType, + Title = item.Name, + TypeText = BuildTypeText(item.SlotType), + Description = BuildDescription(item), + Rarity = item.Rarity, + Tags = item.Tags != null ? (TagType[])item.Tags.Clone() : Array.Empty(), + Icon = null, + IsSelectable = true, + SourceItem = item + }; + } + + private static RewardSelectItemRawData CloneRawItem(RewardSelectItemRawData source) + { + if (source == null) + { + return null; + } + + return new RewardSelectItemRawData + { + RewardId = source.RewardId, + SlotType = source.SlotType, + Title = source.Title, + TypeText = source.TypeText, + Description = source.Description, + Rarity = source.Rarity, + Tags = source.Tags != null ? (TagType[])source.Tags.Clone() : Array.Empty(), + Icon = source.Icon, + IsSelectable = source.IsSelectable, + SourceItem = source.SourceItem, + UserData = source.UserData + }; + } + + private static string BuildTypeText(TowerCompSlotType slotType) + { + return slotType switch + { + TowerCompSlotType.Muzzle => "Muzzle Component", + TowerCompSlotType.Bearing => "Bearing Component", + TowerCompSlotType.Base => "Base Component", + TowerCompSlotType.Accessory => "Accessory", + _ => "Component" + }; + } + + private static string BuildDescription(TowerCompItemData item) + { + if (item is MuzzleCompItemData muzzle) + { + int damage = muzzle.AttackDamage != null && muzzle.AttackDamage.Length > 0 ? muzzle.AttackDamage[0] : 0; + return $"Damage: {damage}, Spread: {muzzle.DamageRandomRate:P0}"; + } + + if (item is BearingCompItemData bearing) + { + float range = bearing.AttackRange != null && bearing.AttackRange.Length > 0 ? bearing.AttackRange[0] : 0f; + float rotateSpeed = bearing.RotateSpeed != null && bearing.RotateSpeed.Length > 0 ? bearing.RotateSpeed[0] : 0f; + return $"Range: {range:0.##}, Rotate Speed: {rotateSpeed:0.##}"; + } + + if (item is BaseCompItemData baseComp) + { + float attackSpeed = baseComp.AttackSpeed != null && baseComp.AttackSpeed.Length > 0 ? baseComp.AttackSpeed[0] : 0f; + return $"Attack Speed: {attackSpeed:0.##}, Property: {baseComp.AttackPropertyType}"; + } + + return string.Empty; + } + } +} diff --git a/Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs.meta b/Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs.meta new file mode 100644 index 0000000..903e7b9 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/UseCase/RewardSelectFormUseCase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee056442ccca28c4da90ef00330d5a55 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/View/IconArea.cs b/Assets/GameMain/Scripts/UI/General/View/IconArea.cs new file mode 100644 index 0000000..d6c7daa --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/View/IconArea.cs @@ -0,0 +1,53 @@ +using GeometryTD.Definition; +using UnityEngine; +using UnityEngine.UI; +using UnityGameFramework.Runtime; + +namespace GeometryTD.UI +{ + public class IconArea : MonoBehaviour + { + [SerializeField] private Image _board; + + [SerializeField] private Image _icon; + + private IconAreaContext _context; + + public void OnInit(IconAreaContext context) + { + if (context == null) + { + Log.Error("Icon area need IconAreaContext."); + return; + } + + _context = context; + SetIcon(_context.Icon); + SetRarity(_context.Rarity); + } + + public void SetIcon(Sprite sprite) + { + _icon.sprite = sprite; + } + + public void SetRarity(RarityType rarity) + { + _board.color = rarity switch + { + RarityType.White => Color.white, + RarityType.Green => Color.green, + RarityType.Blue => Color.blue, + RarityType.Purple => Color.magenta, + RarityType.Red => Color.red, + _ => Color.clear, + }; + } + + public void OnReset() + { + SetIcon(null); + SetRarity(RarityType.None); + } + } +} \ No newline at end of file diff --git a/Assets/GameMain/Scripts/UI/General/View/IconArea.cs.meta b/Assets/GameMain/Scripts/UI/General/View/IconArea.cs.meta new file mode 100644 index 0000000..81d0517 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/View/IconArea.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ed74147813b96e4e95b5418f21999b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/View/RewardItem.cs b/Assets/GameMain/Scripts/UI/General/View/RewardItem.cs new file mode 100644 index 0000000..aec52ea --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/View/RewardItem.cs @@ -0,0 +1,171 @@ +using System.Collections.Generic; +using GeometryTD.CustomEvent; +using TMPro; +using UnityEngine; + +namespace GeometryTD.UI +{ + public class RewardItem : MonoBehaviour + { + [SerializeField] private IconArea _iconArea; + + [SerializeField] private TMP_Text _titleText; + + [SerializeField] private TMP_Text _typeText; + + [SerializeField] private TMP_Text _descriptionText; + + [SerializeField] private Transform _tagItemParent; + + [SerializeField] private TagItem _tagItemTemplate; + + private readonly List _runtimeTagItems = new List(); + + private RewardItemContext _context; + + + public void OnInit(RewardItemContext context) + { + if (context == null) + { + OnReset(); + gameObject.SetActive(false); + return; + } + + _context = context; + gameObject.SetActive(true); + + if (_iconArea != null) + { + if (context.IconArea != null) + { + _iconArea.OnInit(context.IconArea); + } + else + { + _iconArea.OnReset(); + } + } + + if (_titleText != null) + { + _titleText.text = context.Title ?? string.Empty; + } + + if (_typeText != null) + { + _typeText.text = context.TypeText ?? string.Empty; + } + + if (_descriptionText != null) + { + _descriptionText.text = context.Description ?? string.Empty; + } + + RefreshTags(context.Tags); + } + + public void OnReset() + { + _context = null; + + if (_iconArea != null) + { + _iconArea.OnReset(); + } + + if (_titleText != null) + { + _titleText.text = string.Empty; + } + + if (_typeText != null) + { + _typeText.text = string.Empty; + } + + if (_descriptionText != null) + { + _descriptionText.text = string.Empty; + } + + ClearTags(); + } + + public void OnClick() + { + if (_context == null || !_context.IsSelectable) + { + return; + } + + GameEntry.Event.Fire(this, RewardSelectItemSelectedEventArgs.Create(_context.Index)); + } + + private void RefreshTags(TagItemContext[] tagContexts) + { + ClearTags(); + + if (_tagItemParent == null || tagContexts == null || tagContexts.Length <= 0) + { + return; + } + + TagItem template = ResolveTagTemplate(); + if (template == null) + { + return; + } + + for (int i = 0; i < tagContexts.Length; i++) + { + TagItemContext tagContext = tagContexts[i]; + if (tagContext == null || string.IsNullOrWhiteSpace(tagContext.TagName)) + { + continue; + } + + TagItem tagItem = Instantiate(template, _tagItemParent); + tagItem.gameObject.SetActive(true); + tagItem.OnInit(tagContext); + _runtimeTagItems.Add(tagItem); + } + } + + private TagItem ResolveTagTemplate() + { + if (_tagItemTemplate != null) + { + return _tagItemTemplate; + } + + if (_tagItemParent == null) + { + return null; + } + + _tagItemTemplate = _tagItemParent.GetComponentInChildren(true); + if (_tagItemTemplate != null) + { + _tagItemTemplate.gameObject.SetActive(false); + } + + return _tagItemTemplate; + } + + private void ClearTags() + { + for (int i = _runtimeTagItems.Count - 1; i >= 0; i--) + { + TagItem tagItem = _runtimeTagItems[i]; + if (tagItem != null) + { + Destroy(tagItem.gameObject); + } + } + + _runtimeTagItems.Clear(); + } + } +} diff --git a/Assets/GameMain/Scripts/UI/Templates/GameScene/View/ShopGoodsItem.cs.meta b/Assets/GameMain/Scripts/UI/General/View/RewardItem.cs.meta similarity index 100% rename from Assets/GameMain/Scripts/UI/Templates/GameScene/View/ShopGoodsItem.cs.meta rename to Assets/GameMain/Scripts/UI/General/View/RewardItem.cs.meta diff --git a/Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs b/Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs new file mode 100644 index 0000000..e12bfee --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs @@ -0,0 +1,167 @@ +using GeometryTD.CustomEvent; +using TMPro; +using UnityEngine; +using UnityGameFramework.Runtime; + +namespace GeometryTD.UI +{ + public class RewardSelectForm : UGuiForm + { + [SerializeField] private Transform _selectItemParent; + + [SerializeField] private RewardItem[] _rewardItems; + + [SerializeField] private TMP_Text _tipText; + + [SerializeField] private TMP_Text _refreshButtonText; + + [SerializeField] private CommonButton _refreshButton; + + [SerializeField] private CommonButton _giveUpButton; + + private RewardSelectFormContext _context; + + public void OnInit(RewardSelectFormContext context) + { + if (context == null) + { + Log.Error("RewardSelectForm need Context."); + return; + } + + RefreshUI(context); + } + + public void RefreshUI(RewardSelectFormContext context) + { + _context = context; + EnsureRewardItems(); + + if (_tipText != null) + { + _tipText.text = context?.TipText ?? string.Empty; + } + + if (_refreshButtonText != null) + { + _refreshButtonText.text = context?.RefreshButtonText ?? string.Empty; + } + + if (_refreshButton != null) + { + _refreshButton.Interactive = context?.CanRefresh ?? false; + } + + if (_giveUpButton != null) + { + _giveUpButton.Interactive = context?.CanGiveUp ?? false; + } + + if (_rewardItems == null || _rewardItems.Length <= 0) + { + return; + } + + for (int i = 0; i < _rewardItems.Length; i++) + { + RewardItem rewardItem = _rewardItems[i]; + if (rewardItem == null) + { + continue; + } + + RewardItemContext itemContext = null; + if (context?.RewardItems != null && i < context.RewardItems.Length) + { + itemContext = context.RewardItems[i]; + } + + rewardItem.OnInit(itemContext); + } + } + + public void OnRefreshButtonClick() + { + if (_context != null && !_context.CanRefresh) + { + return; + } + + GameEntry.Event.Fire(this, RewardSelectRefreshEventArgs.Create()); + } + + public void OnGiveUpButtonClick() + { + if (_context != null && !_context.CanGiveUp) + { + return; + } + + GameEntry.Event.Fire(this, RewardSelectGiveUpEventArgs.Create()); + } + + protected override void OnOpen(object userData) + { + base.OnOpen(userData); + + if (userData is RewardSelectFormContext context) + { + RefreshUI(context); + return; + } + + Log.Warning("RewardSelectForm requires RewardSelectFormContext as userData."); + } + + protected override void OnClose(bool isShutdown, object userData) + { + _context = null; + + if (_tipText != null) + { + _tipText.text = string.Empty; + } + + if (_refreshButtonText != null) + { + _refreshButtonText.text = string.Empty; + } + + if (_rewardItems != null) + { + for (int i = 0; i < _rewardItems.Length; i++) + { + RewardItem rewardItem = _rewardItems[i]; + if (rewardItem == null) + { + continue; + } + + rewardItem.OnReset(); + rewardItem.gameObject.SetActive(false); + } + } + + base.OnClose(isShutdown, userData); + } + + private void EnsureRewardItems() + { + if (_rewardItems != null && _rewardItems.Length > 0) + { + return; + } + + if (_selectItemParent != null) + { + _rewardItems = _selectItemParent.GetComponentsInChildren(true); + } + + if (_rewardItems == null || _rewardItems.Length <= 0) + { + _rewardItems = GetComponentsInChildren(true); + } + } + } + +} diff --git a/Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs.meta b/Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs.meta new file mode 100644 index 0000000..5574dd6 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/View/RewardSelectForm.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60b499ea8a70a7f489bbd5bf0cec5768 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/General/View/TagItem.cs b/Assets/GameMain/Scripts/UI/General/View/TagItem.cs new file mode 100644 index 0000000..8016f3c --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/View/TagItem.cs @@ -0,0 +1,27 @@ +using TMPro; +using UnityEngine; + +namespace GeometryTD.UI +{ + public class TagItem : MonoBehaviour + { + [SerializeField] private RectTransform _bgRect; + + [SerializeField] private TMP_Text _tagName; + + [SerializeField] private float _bgExtraWidth = 12f; + + private TagItemContext _context; + + public void OnInit(TagItemContext context) + { + _context = context; + _tagName.text = _context?.TagName ?? string.Empty; + + _tagName.ForceMeshUpdate(); + var targetWidth = _tagName.preferredWidth + _bgExtraWidth; + _bgRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, targetWidth); + } + } + +} diff --git a/Assets/GameMain/Scripts/UI/General/View/TagItem.cs.meta b/Assets/GameMain/Scripts/UI/General/View/TagItem.cs.meta new file mode 100644 index 0000000..9540085 --- /dev/null +++ b/Assets/GameMain/Scripts/UI/General/View/TagItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0beb75e5722a1db47af08437f98a0e63 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/Scripts/UI/Templates/GameScene/View/ShopGoodsItem.cs b/Assets/GameMain/Scripts/UI/Templates/GameScene/View/ShopGoodsItem.cs deleted file mode 100644 index bc9436e..0000000 --- a/Assets/GameMain/Scripts/UI/Templates/GameScene/View/ShopGoodsItem.cs +++ /dev/null @@ -1,32 +0,0 @@ -// using TMPro; -// using UnityEngine; -// using UnityEngine.UI; -// -// namespace UI -// { -// public class ShopGoodsItem : MonoBehaviour -// { -// [SerializeField] private IconArea _iconArea; -// -// [SerializeField] private TMP_Text _titleText; -// -// [SerializeField] private TMP_Text _typeText; -// -// [SerializeField] private TMP_Text _descriptionText; -// -// [SerializeField] private TMP_Text _costText; -// -// #region Init -// -// public void Init(GoodsItemContext data) -// { -// _iconArea.OnInit(data.Icon, data.Rarity); -// _titleText.text = data.Title; -// _typeText.text = data.Type; -// _descriptionText.text = data.Description; -// _costText.text = $"{data.Price} "; -// } -// -// #endregion -// } -// } diff --git a/Assets/GameMain/UI/UIForms/RewardSelectForm.prefab b/Assets/GameMain/UI/UIForms/RewardSelectForm.prefab new file mode 100644 index 0000000..acea8ef --- /dev/null +++ b/Assets/GameMain/UI/UIForms/RewardSelectForm.prefab @@ -0,0 +1,1141 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &203886993709728267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3369556548812766188} + - component: {fileID: 3942407105513264856} + m_Layer: 5 + m_Name: RewardSelectForm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3369556548812766188 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203886993709728267} + 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: 5791967671543353834} + - {fileID: 8936164671788401612} + - {fileID: 2841154288118469804} + - {fileID: 9180956643223427498} + - {fileID: 3992933059442348920} + 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!114 &3942407105513264856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203886993709728267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 60b499ea8a70a7f489bbd5bf0cec5768, type: 3} + m_Name: + m_EditorClassIdentifier: + _selectItemParent: {fileID: 0} + _rewardItems: + - {fileID: 5767805984735540705} + - {fileID: 1323010236285016769} + - {fileID: 2135228217513378385} + _tipText: {fileID: 1768815743490571077} + _refreshButtonText: {fileID: 6600743241247972864} + _refreshButton: {fileID: 8741464604370446051} + _giveUpButton: {fileID: 3553089024392916017} +--- !u!1 &1861683312295499278 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8936164671788401612} + - component: {fileID: 9048004891675378712} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8936164671788401612 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1861683312295499278} + 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: 509018440729091305} + - {fileID: 4992099054679110601} + - {fileID: 5384866619212819289} + m_Father: {fileID: 3369556548812766188} + 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: 70} + m_SizeDelta: {x: 2000, y: 800} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9048004891675378712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1861683312295499278} + 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: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &6513321333238184837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5791967671543353834} + - component: {fileID: 4178376523880888678} + - component: {fileID: 2515255466706960946} + m_Layer: 5 + m_Name: mask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5791967671543353834 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6513321333238184837} + 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: 3369556548812766188} + 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 &4178376523880888678 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6513321333238184837} + m_CullTransparentMesh: 1 +--- !u!114 &2515255466706960946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6513321333238184837} + 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.2, g: 0.2, b: 0.2, a: 0.5019608} + 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 &7192045997931282086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2841154288118469804} + - component: {fileID: 471297334825648020} + - component: {fileID: 1768815743490571077} + m_Layer: 5 + m_Name: TipText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2841154288118469804 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7192045997931282086} + 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: 3369556548812766188} + 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: 567.5193} + m_SizeDelta: {x: 1494.499, y: 99.0385} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &471297334825648020 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7192045997931282086} + m_CullTransparentMesh: 1 +--- !u!114 &1768815743490571077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7192045997931282086} + 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: "\u9009\u62E9\u4E00\u4E2A\u5956\u52B1" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 99d811b0183246646a2ce8df996f4bca, type: 2} + m_sharedMaterial: {fileID: -1106088975554028259, guid: 99d811b0183246646a2ce8df996f4bca, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4293322470 + m_fontColor: {r: 0.9, g: 0.9, b: 0.9, 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: 72 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + 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_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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 &665757775807239567 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 3369556548812766188} + m_Modifications: + - target: {fileID: 770565994539545022, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_Name + value: GiveUpButton + objectReference: {fileID: 0} + - target: {fileID: 1920576543566152029, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_text + value: "\u653E\u5F03" + 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: 3942407105513264856} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 3942407105513264856} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: OnGiveUpButtonClick + objectReference: {fileID: 0} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: GeometryTD.UI.RewardSelectForm, 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.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.x + value: 400 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.y + value: 80 + 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: 470 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -480 + 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} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2307f223279813546a43b221ddd496cc, type: 3} +--- !u!114 &3553089024392916017 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 665757775807239567} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5079836f95c2a44b96fa331487ebb70, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &3992933059442348920 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 665757775807239567} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1356895859423329400 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8936164671788401612} + m_Modifications: + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_SizeDelta.x + value: 600 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_SizeDelta.y + value: 800 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3072890538777882148, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Name + value: RewardItem + objectReference: {fileID: 0} + - target: {fileID: 5358167882838157644, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + - target: {fileID: 5358167882838157644, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: _onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53c96587088713749972878933b623f4, type: 3} +--- !u!224 &509018440729091305 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + m_PrefabInstance: {fileID: 1356895859423329400} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5767805984735540705 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4818839934941563289, guid: 53c96587088713749972878933b623f4, + type: 3} + m_PrefabInstance: {fileID: 1356895859423329400} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 271f2a0727c521c4280eb2d47fd8de33, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &4701141398207864669 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 3369556548812766188} + m_Modifications: + - target: {fileID: 770565994539545022, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_Name + value: RefreshButton + objectReference: {fileID: 0} + - target: {fileID: 1920576543566152029, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_text + value: "\u5237\u65B0" + 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: 3942407105513264856} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 3942407105513264856} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: OnRefreshButtonClick + objectReference: {fileID: 0} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: GeometryTD.UI.RewardSelectForm, 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.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.x + value: 400 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.y + value: 80 + 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: -470 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -480 + 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} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2307f223279813546a43b221ddd496cc, type: 3} +--- !u!114 &6600743241247972864 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1920576543566152029, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 4701141398207864669} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &8741464604370446051 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 4701141398207864669} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5079836f95c2a44b96fa331487ebb70, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &9180956643223427498 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 4701141398207864669} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5801678310934172504 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8936164671788401612} + m_Modifications: + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_SizeDelta.x + value: 600 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_SizeDelta.y + value: 800 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3072890538777882148, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Name + value: RewardItem (1) + objectReference: {fileID: 0} + - target: {fileID: 5358167882838157644, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + - target: {fileID: 5358167882838157644, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: _onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53c96587088713749972878933b623f4, type: 3} +--- !u!114 &1323010236285016769 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4818839934941563289, guid: 53c96587088713749972878933b623f4, + type: 3} + m_PrefabInstance: {fileID: 5801678310934172504} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 271f2a0727c521c4280eb2d47fd8de33, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &4992099054679110601 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + m_PrefabInstance: {fileID: 5801678310934172504} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6880989660159282120 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8936164671788401612} + m_Modifications: + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_SizeDelta.x + value: 600 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_SizeDelta.y + value: 800 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3072890538777882148, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: m_Name + value: RewardItem (2) + objectReference: {fileID: 0} + - target: {fileID: 5358167882838157644, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + - target: {fileID: 5358167882838157644, guid: 53c96587088713749972878933b623f4, + type: 3} + propertyPath: _onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3942407105513264856} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53c96587088713749972878933b623f4, type: 3} +--- !u!114 &2135228217513378385 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4818839934941563289, guid: 53c96587088713749972878933b623f4, + type: 3} + m_PrefabInstance: {fileID: 6880989660159282120} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 271f2a0727c521c4280eb2d47fd8de33, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &5384866619212819289 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1568602919960830097, guid: 53c96587088713749972878933b623f4, + type: 3} + m_PrefabInstance: {fileID: 6880989660159282120} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/GameMain/UI/UIForms/RewardSelectForm.prefab.meta b/Assets/GameMain/UI/UIForms/RewardSelectForm.prefab.meta new file mode 100644 index 0000000..45e4c34 --- /dev/null +++ b/Assets/GameMain/UI/UIForms/RewardSelectForm.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 02bae30e4dfd8d6479998bf839107ee3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/UI/UIItems/IconArea.prefab b/Assets/GameMain/UI/UIItems/IconArea.prefab new file mode 100644 index 0000000..4e1ad8f --- /dev/null +++ b/Assets/GameMain/UI/UIItems/IconArea.prefab @@ -0,0 +1,213 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4205772521484874563 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1237584388157341770} + - component: {fileID: 9116985011360682856} + - component: {fileID: 1670536737060225200} + m_Layer: 5 + m_Name: board + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1237584388157341770 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4205772521484874563} + 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: 7077986728513895950} + 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 &9116985011360682856 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4205772521484874563} + m_CullTransparentMesh: 1 +--- !u!114 &1670536737060225200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4205772521484874563} + 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: a8c07bbe04fdaf04b80e27f651a8edd6, 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 &6166913213017600555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7077986728513895950} + - component: {fileID: 4188948208413826486} + - component: {fileID: 3166286295052151906} + m_Layer: 5 + m_Name: IconArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7077986728513895950 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6166913213017600555} + 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: 1237584388157341770} + - {fileID: 4901276336929304172} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 100, y: -100} + m_SizeDelta: {x: 120, y: 120} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4188948208413826486 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6166913213017600555} + m_CullTransparentMesh: 1 +--- !u!114 &3166286295052151906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6166913213017600555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ed74147813b96e4e95b5418f21999b7, type: 3} + m_Name: + m_EditorClassIdentifier: + _board: {fileID: 1670536737060225200} + _icon: {fileID: 2956554430248484948} +--- !u!1 &8265042373470905490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4901276336929304172} + - component: {fileID: 2902667718862263558} + - component: {fileID: 2956554430248484948} + m_Layer: 5 + m_Name: icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4901276336929304172 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8265042373470905490} + 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: 1 + m_Children: [] + m_Father: {fileID: 7077986728513895950} + 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!222 &2902667718862263558 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8265042373470905490} + m_CullTransparentMesh: 1 +--- !u!114 &2956554430248484948 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8265042373470905490} + 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: 21300108, guid: 29c9cded5e558164aaf8c9bf08aa1510, 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 diff --git a/Assets/GameMain/UI/UIItems/IconArea.prefab.meta b/Assets/GameMain/UI/UIItems/IconArea.prefab.meta new file mode 100644 index 0000000..a59b4f0 --- /dev/null +++ b/Assets/GameMain/UI/UIItems/IconArea.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c8cee1d9c43b9b444bd818f31a52c383 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/UI/UIItems/RepoItem.prefab b/Assets/GameMain/UI/UIItems/RepoItem.prefab index 4334d1e..52b4312 100644 --- a/Assets/GameMain/UI/UIItems/RepoItem.prefab +++ b/Assets/GameMain/UI/UIItems/RepoItem.prefab @@ -1,80 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &3426093524053649446 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8117380140389307156} - - component: {fileID: 3360601797661730477} - - component: {fileID: 6348008773882294268} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8117380140389307156 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3426093524053649446} - 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: 1975505172905695105} - 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 &3360601797661730477 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3426093524053649446} - m_CullTransparentMesh: 1 ---- !u!114 &6348008773882294268 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3426093524053649446} - 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: 0 - 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 &8845098964186727177 GameObject: m_ObjectHideFlags: 0 @@ -106,7 +31,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3419514439234906529} - - {fileID: 8117380140389307156} + - {fileID: 5601911972039586724} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -135,7 +60,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _titleText: {fileID: 830716417586720267} - _highlightImage: {fileID: 6348008773882294268} + _highlightImage: {fileID: 269831324452536459} + _iconArea: {fileID: 321755258514039240} --- !u!1001 &1234001823675854678 PrefabInstance: m_ObjectHideFlags: 0 @@ -310,6 +236,18 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2307f223279813546a43b221ddd496cc, type: 3} +--- !u!114 &269831324452536459 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1341699087252484061, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 1234001823675854678} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &830716417586720267 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 1920576543566152029, guid: 2307f223279813546a43b221ddd496cc, @@ -328,3 +266,149 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 1234001823675854678} m_PrefabAsset: {fileID: 0} +--- !u!1001 &3424972329100414378 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1975505172905695105} + m_Modifications: + - target: {fileID: 1670536737060225200, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_RaycastTarget + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2956554430248484948, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_RaycastTarget + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6166913213017600555, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_Name + value: IconArea + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c8cee1d9c43b9b444bd818f31a52c383, type: 3} +--- !u!114 &321755258514039240 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3166286295052151906, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + m_PrefabInstance: {fileID: 3424972329100414378} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ed74147813b96e4e95b5418f21999b7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &5601911972039586724 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + m_PrefabInstance: {fileID: 3424972329100414378} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/GameMain/UI/UIItems/RewardItem.prefab b/Assets/GameMain/UI/UIItems/RewardItem.prefab new file mode 100644 index 0000000..d5b0c70 --- /dev/null +++ b/Assets/GameMain/UI/UIItems/RewardItem.prefab @@ -0,0 +1,905 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2039268993833529549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7507997495033505694} + - component: {fileID: 1664476319281387097} + - component: {fileID: 1750581065802632959} + m_Layer: 5 + m_Name: GoodsType + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7507997495033505694 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2039268993833529549} + 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: 1568602919960830097} + 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: -120, y: 265.00003} + m_SizeDelta: {x: 350, y: 50} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &1664476319281387097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2039268993833529549} + m_CullTransparentMesh: 1 +--- !u!114 &1750581065802632959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2039268993833529549} + 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: "\u67AA\u53E3" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 99d811b0183246646a2ce8df996f4bca, type: 2} + m_sharedMaterial: {fileID: -1106088975554028259, guid: 99d811b0183246646a2ce8df996f4bca, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4289001471 + m_fontColor: {r: 1, g: 0.9684256, b: 0.64465404, 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: 40 + m_fontSizeBase: 40 + 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_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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 &3072890538777882148 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1568602919960830097} + - component: {fileID: 4818839934941563289} + m_Layer: 5 + m_Name: RewardItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1568602919960830097 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3072890538777882148} + 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: 1642301384952913762} + - {fileID: 8524767648617461388} + - {fileID: 7840400519825908318} + - {fileID: 7507997495033505694} + - {fileID: 7569228790803904920} + - {fileID: 328260851586869610} + - {fileID: 5510907989210912261} + 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: 450, y: 650} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4818839934941563289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3072890538777882148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 271f2a0727c521c4280eb2d47fd8de33, type: 3} + m_Name: + m_EditorClassIdentifier: + _iconArea: {fileID: 4577039253647615200} + _titleText: {fileID: 8208316091986530181} + _typeText: {fileID: 1750581065802632959} + _descriptionText: {fileID: 498292184531558701} + _tagItemParent: {fileID: 328260851586869610} + _tagItemTemplate: {fileID: 4772206702483514911, guid: b8cf55567ed692c439cc016211a19ded, + type: 3} +--- !u!1 &3487172905367850696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7569228790803904920} + - component: {fileID: 8740690420287903044} + - component: {fileID: 498292184531558701} + m_Layer: 5 + m_Name: GoodsInfo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7569228790803904920 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3487172905367850696} + 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: 1568602919960830097} + 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: 30} + m_SizeDelta: {x: 520, y: 350} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8740690420287903044 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3487172905367850696} + m_CullTransparentMesh: 1 +--- !u!114 &498292184531558701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3487172905367850696} + 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: "\u653B\u51FB\u4F24\u5BB3\uFF1A20\uFF08+10/\u7EA7\uFF09\n\u653B\u51FB\u65B9\u5F0F\uFF1A\u5355\u53D1\u5B50\u5F39\n" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 99d811b0183246646a2ce8df996f4bca, type: 2} + m_sharedMaterial: {fileID: -1106088975554028259, guid: 99d811b0183246646a2ce8df996f4bca, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294638330 + m_fontColor: {r: 0.98039216, g: 0.98039216, b: 0.98039216, 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: 28 + m_fontSizeBase: 28 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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 &4138126764445597825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1642301384952913762} + - component: {fileID: 6919955637243660158} + - component: {fileID: 7856203203445552886} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1642301384952913762 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138126764445597825} + 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: 1568602919960830097} + 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 &6919955637243660158 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138126764445597825} + m_CullTransparentMesh: 1 +--- !u!114 &7856203203445552886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138126764445597825} + 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.6, g: 0.6, b: 0.6, 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: 9f847ec5e66e03e4ead1d3c5f7b510e8, 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 &7266207868424449694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7840400519825908318} + - component: {fileID: 7410853422288194364} + - component: {fileID: 8208316091986530181} + m_Layer: 5 + m_Name: GoodsTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7840400519825908318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7266207868424449694} + 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: 1568602919960830097} + 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: -120, y: 330} + m_SizeDelta: {x: 350, y: 60} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &7410853422288194364 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7266207868424449694} + m_CullTransparentMesh: 1 +--- !u!114 &8208316091986530181 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7266207868424449694} + 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: "\u5143\u7D20\u67AA\u53E3" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 99d811b0183246646a2ce8df996f4bca, type: 2} + m_sharedMaterial: {fileID: -1106088975554028259, guid: 99d811b0183246646a2ce8df996f4bca, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294638330 + m_fontColor: {r: 0.98039216, g: 0.98039216, b: 0.98039216, 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: 45.45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 1 + 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_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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 &8566141322218864134 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 328260851586869610} + - component: {fileID: 2485431722677967612} + - component: {fileID: 5364350879579257705} + m_Layer: 5 + m_Name: Tags + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &328260851586869610 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8566141322218864134} + 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: 1568602919960830097} + 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: -200} + m_SizeDelta: {x: 520, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2485431722677967612 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8566141322218864134} + m_CullTransparentMesh: 1 +--- !u!114 &5364350879579257705 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8566141322218864134} + 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: 3 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &1473803456499812482 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1568602919960830097} + m_Modifications: + - target: {fileID: 6166913213017600555, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_Name + value: IconArea + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_SizeDelta.x + value: 120 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_SizeDelta.y + value: 120 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -100 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c8cee1d9c43b9b444bd818f31a52c383, type: 3} +--- !u!114 &4577039253647615200 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3166286295052151906, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + m_PrefabInstance: {fileID: 1473803456499812482} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ed74147813b96e4e95b5418f21999b7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &8524767648617461388 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7077986728513895950, guid: c8cee1d9c43b9b444bd818f31a52c383, + type: 3} + m_PrefabInstance: {fileID: 1473803456499812482} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8227563884799529202 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1568602919960830097} + m_Modifications: + - target: {fileID: 770565994539545022, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_Name + value: CommonButton + objectReference: {fileID: 0} + - target: {fileID: 1920576543566152029, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_text + value: "\u9009\u62E9" + 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[1].m_Target + value: + objectReference: {fileID: 4818839934941563289} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: OnClick + objectReference: {fileID: 0} + - target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: GeometryTD.UI.RewardItem, 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 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + 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.5 + 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: 400 + objectReference: {fileID: 0} + - target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + propertyPath: m_SizeDelta.y + value: 80 + 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: 50 + 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} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2307f223279813546a43b221ddd496cc, type: 3} +--- !u!224 &5510907989210912261 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc, + type: 3} + m_PrefabInstance: {fileID: 8227563884799529202} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/GameMain/UI/UIItems/RewardItem.prefab.meta b/Assets/GameMain/UI/UIItems/RewardItem.prefab.meta new file mode 100644 index 0000000..c052f4f --- /dev/null +++ b/Assets/GameMain/UI/UIItems/RewardItem.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 53c96587088713749972878933b623f4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameMain/UI/UIItems/TagItem.prefab b/Assets/GameMain/UI/UIItems/TagItem.prefab new file mode 100644 index 0000000..cde9d03 --- /dev/null +++ b/Assets/GameMain/UI/UIItems/TagItem.prefab @@ -0,0 +1,228 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2724990199440728093 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2441590282985786936} + - component: {fileID: 1005664183759985300} + - component: {fileID: 514035292061318797} + - component: {fileID: 4772206702483514911} + m_Layer: 5 + m_Name: TagItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2441590282985786936 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2724990199440728093} + 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: 9130476502403829143} + 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: 100, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1005664183759985300 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2724990199440728093} + m_CullTransparentMesh: 1 +--- !u!114 &514035292061318797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2724990199440728093} + 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: 9f847ec5e66e03e4ead1d3c5f7b510e8, 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!114 &4772206702483514911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2724990199440728093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0beb75e5722a1db47af08437f98a0e63, type: 3} + m_Name: + m_EditorClassIdentifier: + _bgRect: {fileID: 2441590282985786936} + _tagName: {fileID: 3821208338431112190} + _bgExtraWidth: 12 +--- !u!1 &2752403647887991445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9130476502403829143} + - component: {fileID: 6471715158470375872} + - component: {fileID: 3821208338431112190} + m_Layer: 5 + m_Name: TagName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9130476502403829143 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2752403647887991445} + 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: 2441590282985786936} + 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 &6471715158470375872 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2752403647887991445} + m_CullTransparentMesh: 1 +--- !u!114 &3821208338431112190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2752403647887991445} + 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: Fire + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, 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: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + 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_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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/Assets/GameMain/UI/UIItems/TagItem.prefab.meta b/Assets/GameMain/UI/UIItems/TagItem.prefab.meta new file mode 100644 index 0000000..82156e4 --- /dev/null +++ b/Assets/GameMain/UI/UIItems/TagItem.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b8cf55567ed692c439cc016211a19ded +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: