添加“奖励 3 选 1”UI

- RewardSelectForm:其中包括 3 个可选的 RewardItem ,刷新和放弃按钮
- 应用战斗节点基地生命产生的额外事件
This commit is contained in:
SepComet 2026-03-02 21:42:27 +08:00
parent daba9cbdf9
commit 3e52a4df55
52 changed files with 4495 additions and 133 deletions

View File

@ -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

View File

@ -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<TowerCompItemData> RollSettlementRewardCandidates(
int displayPhaseIndex,
LevelThemeType themeType,
int candidateCount)
{
int resolvedCount = Mathf.Max(0, candidateCount);
if (resolvedCount <= 0)
{
return Array.Empty<TowerCompItemData>();
}
List<TowerCompItemData> candidates = new List<TowerCompItemData>(resolvedCount);
HashSet<int> selectedPoolRowIds = new HashSet<int>();
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;

View File

@ -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<TowerCompItemData> candidateItems = _combatResourceManager.RollSettlementRewardCandidates(
_phaseLoopRuntime.DisplayPhaseIndex,
ResolveCurrentThemeType(),
RewardSelectDisplayCount);
if (candidateItems == null || candidateItems.Count <= 0)
{
return false;
}
List<RewardSelectItemRawData> rewardPool = new List<RewardSelectItemRawData>(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<TagType>(),
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);
}

View File

@ -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;

View File

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

View File

@ -31,12 +31,22 @@
/// 主界面。
/// </summary>
MainForm = 110,
/// <summary>
/// 仓库界面。
/// </summary>
RepoForm = 111,
/// <summary>
/// 道具详细信息界面。
/// </summary>
ItemDescForm = 112,
/// <summary>
/// 奖励三选一界面。
/// </summary>
RewardSelectForm = 113,
/// <summary>
/// 事件节点界面。
/// </summary>
@ -51,15 +61,15 @@
/// 战斗结算界面。
/// </summary>
CombatFinishForm = 141,
/// <summary>
/// 战斗选择界面
/// </summary>
CombatSelectForm = 142,
/// <summary>
/// 测试菜单。
/// </summary>
TestMenuForm = 200,
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 775ed8967a23327419c664150ce1fad3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<RewardSelectGiveUpEventArgs>();
}
public override void Clear()
{
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 36ac796e2a3b8054fb6c8a62fa83a961
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<RewardSelectItemSelectedEventArgs>();
args.SelectedIndex = selectedIndex;
return args;
}
public override void Clear()
{
SelectedIndex = -1;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 926df4c8b4422c84496ee81b0a69963c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<RewardSelectRefreshEventArgs>();
}
public override void Clear()
{
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b3e2fd7e3e22b2d4399f90e7d5064f50
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -7,5 +7,6 @@ namespace GeometryTD.UI
public string Title;
public long InstanceId;
public TowerCompSlotType ComponentSlotType;
public IconAreaContext IconAreaContext;
}
}

View File

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

View File

@ -1,4 +1,3 @@
using System.Collections.Generic;
using GeometryTD.Definition;
namespace GeometryTD.UI

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c5d39fc6e1ad1fe4ba9d2454eb9a0cb3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8ab52d2f24634cd47bd8344b69dc6ee9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6f4ec685dcc5a07458a149792aa422f1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,11 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace GeometryTD.UI
{
public class TagItemContext : UIContext
{
public string TagName;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 83fe4616261e1614e8fc6c049cbe4606
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<RewardSelectFormContext, RewardSelectForm>
{
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>();
}
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>();
}
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<DRTag>();
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<RewardSelectForm>();
return ownerForm == Form;
}
return false;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8d4d6617e96d6984dac4f279d4f194e5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 642bc21ab1e2948468912ffa6e051a6a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d00c968c551de7b4a8d8841cf5e98d66
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<RewardSelectItemRawData> _rewardPool = new List<RewardSelectItemRawData>();
private RewardSelectFormRawData _currentModel;
private Action<RewardSelectItemRawData> _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<RewardSelectItemRawData> 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<RewardSelectItemRawData> 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<RewardSelectItemRawData>();
}
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<RewardSelectItemRawData> BuildDefaultRewardPool()
{
BackpackInventoryData inventory = RepoFormUseCase.SampleInventory();
List<RewardSelectItemRawData> rewards = new List<RewardSelectItemRawData>();
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<TagType>(),
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<TagType>(),
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;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ee056442ccca28c4da90ef00330d5a55
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7ed74147813b96e4e95b5418f21999b7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<TagItem> _runtimeTagItems = new List<TagItem>();
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<TagItem>(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();
}
}
}

View File

@ -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<RewardItem>(true);
}
if (_rewardItems == null || _rewardItems.Length <= 0)
{
_rewardItems = GetComponentsInChildren<RewardItem>(true);
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 60b499ea8a70a7f489bbd5bf0cec5768
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0beb75e5722a1db47af08437f98a0e63
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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} <sprite name=\"coin\" index=0>";
// }
//
// #endregion
// }
// }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 02bae30e4dfd8d6479998bf839107ee3
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c8cee1d9c43b9b444bd818f31a52c383
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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}

View File

@ -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}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 53c96587088713749972878933b623f4
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b8cf55567ed692c439cc016211a19ded
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: