补充相关 UI

- 事件 UI:EventForm
    - 选项:OptionItem
- 仓库 UI:RepoForm
    - 组装槽:CombineSlotItem
    - 组件列表槽:RepoItem
This commit is contained in:
SepComet 2026-02-26 23:29:32 +08:00
parent 11e4c1c1f2
commit d9c118ace3
59 changed files with 5986 additions and 1055 deletions

View File

@ -6,4 +6,5 @@
100 主菜单 MenuForm Default False True
101 设置 SettingForm Default False True
102 关于 AboutForm Default False True
201 事件UI EventForm Default False True
200 事件UI EventForm Default False True
201 背包UI RepoForm Default False True

View File

@ -5,6 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using CustomComponent;
using GeometryTD.CustomComponent;
using UnityEngine;
@ -19,6 +20,8 @@ public partial class GameEntry : MonoBehaviour
public static EnemyManagerComponent EnemyManager { get; private set; }
public static UIRouterComponent UIRouter { get; private set; }
public static EventNodeComponent EventNode { get; private set; }
public static CombatNodeComponent CombatNode { get; private set; }
@ -28,6 +31,7 @@ public partial class GameEntry : MonoBehaviour
BuiltinData = UnityGameFramework.Runtime.GameEntry.GetComponent<BuiltinDataComponent>();
HPBar = UnityGameFramework.Runtime.GameEntry.GetComponent<HPBarComponent>();
EnemyManager = UnityGameFramework.Runtime.GameEntry.GetComponent<EnemyManagerComponent>();
UIRouter = UnityGameFramework.Runtime.GameEntry.GetComponent<UIRouterComponent>();
EventNode = UnityGameFramework.Runtime.GameEntry.GetComponent<EventNodeComponent>();
CombatNode = UnityGameFramework.Runtime.GameEntry.GetComponent<CombatNodeComponent>();
}

View File

@ -9,6 +9,8 @@ namespace CustomComponent
public class UIRouterComponent : GameFrameworkComponent
{
private readonly Dictionary<UIFormType, IUIFormController> _routeControllers = new();
private const string UINameSpace = "GeometryTD.UI";
public void BindUIUseCase(UIFormType uiFormType, IUIUseCase useCase)
{
@ -35,11 +37,12 @@ namespace CustomComponent
return controller;
}
string typename = $"UI.{uiFormType}Controller";
string typename = $"{UINameSpace}.{uiFormType}Controller";
Type controllerType = Type.GetType(typename);
if (controllerType == null)
{
controller = new DefaultUIFormController(uiFormType);
Log.Warning("Can not find UI Controller for type '{0}'.", typename);
}
else
{

View File

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
namespace GeometryTD.Definition
{
/// <summary>
/// 玩家背包聚合数据。
/// </summary>
[Serializable]
public sealed class BackpackInventoryData
{
/// <summary>
/// 背包金币。
/// </summary>
public int Gold { get; set; }
/// <summary>
/// 背包中的枪口组件实例。
/// </summary>
public List<MuzzleCompItemData> MuzzleComponents { get; set; } = new List<MuzzleCompItemData>();
/// <summary>
/// 背包中的轴承组件实例。
/// </summary>
public List<BearingCompItemData> BearingComponents { get; set; } = new List<BearingCompItemData>();
/// <summary>
/// 背包中的底座组件实例。
/// </summary>
public List<BaseCompItemData> BaseComponents { get; set; } = new List<BaseCompItemData>();
/// <summary>
/// 背包中的防御塔实例。
/// </summary>
public List<DefenseTowerItemData> Towers { get; set; } = new List<DefenseTowerItemData>();
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c39f9ad23ee94de9af2b3d9729f47d7f
timeCreated: 1772105403

View File

@ -0,0 +1,68 @@
using System;
namespace GeometryTD.Definition
{
/// <summary>
/// 防御塔独立属性快照。
/// 注意:这里是塔实例的独立值,不通过组件引用实时计算。
/// </summary>
[Serializable]
public sealed class DefenseTowerStatsData
{
public int AttackDamage { get; set; }
public float DamageRandomRate { get; set; }
public float RotateSpeed { get; set; }
public float AttackRange { get; set; }
public float AttackSpeed { get; set; }
public AttackMethodType AttackMethodType { get; set; }
public AttackPropertyType AttackPropertyType { get; set; }
public TagType[] Tags { get; set; }
}
/// <summary>
/// 背包内防御塔实例数据。
/// </summary>
[Serializable]
public sealed class DefenseTowerItemData
{
/// <summary>
/// 防御塔实例唯一 Id。
/// </summary>
public long InstanceId { get; set; }
/// <summary>
/// 防御塔显示名称。
/// </summary>
public string Name { get; set; }
/// <summary>
/// 防御塔品质。
/// </summary>
public RarityType Rarity { get; set; }
/// <summary>
/// 当前耐久0~100
/// </summary>
public float Endurance { get; set; } = 100f;
/// <summary>
/// 构成该防御塔的枪口组件实例 Id。
/// </summary>
public long MuzzleComponentInstanceId { get; set; }
/// <summary>
/// 构成该防御塔的轴承组件实例 Id。
/// </summary>
public long BearingComponentInstanceId { get; set; }
/// <summary>
/// 构成该防御塔的底座组件实例 Id。
/// </summary>
public long BaseComponentInstanceId { get; set; }
/// <summary>
/// 防御塔独立属性,不依赖组件对象引用。
/// </summary>
public DefenseTowerStatsData Stats { get; set; } = new DefenseTowerStatsData();
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ca5782ae52464616bf2b45704feea0d5
timeCreated: 1772105402

View File

@ -0,0 +1,97 @@
using System;
namespace GeometryTD.Definition
{
/// <summary>
/// 背包内组件实例基类(非 DataTable表示玩家持有物
/// </summary>
[Serializable]
public abstract class TowerCompItemData
{
/// <summary>
/// 组件实例唯一 Id。
/// </summary>
public long InstanceId { get; set; }
/// <summary>
/// 组件配置 Id对应 DataTable Id
/// </summary>
public int ConfigId { get; set; }
/// <summary>
/// 组件槽位类型。
/// </summary>
public TowerCompSlotType SlotType { get; protected set; }
/// <summary>
/// 组件名称。
/// </summary>
public string Name { get; set; }
/// <summary>
/// 组件品质。
/// </summary>
public RarityType Rarity { get; set; }
/// <summary>
/// 组件当前耐久0~100
/// </summary>
public float Endurance { get; set; } = 100f;
/// <summary>
/// 组件约束(先沿用 DataTable 原定义)。
/// </summary>
public string Constraint { get; set; }
/// <summary>
/// 组件当前 Tag实例态
/// </summary>
public TagType[] Tags { get; set; }
}
[Serializable]
public sealed class MuzzleCompItemData : TowerCompItemData
{
public MuzzleCompItemData()
{
SlotType = TowerCompSlotType.Muzzle;
}
public int[] AttackDamage { get; set; }
public float DamageRandomRate { get; set; }
public AttackMethodType AttackMethodType { get; set; }
}
[Serializable]
public sealed class BearingCompItemData : TowerCompItemData
{
public BearingCompItemData()
{
SlotType = TowerCompSlotType.Bearing;
}
public float[] RotateSpeed { get; set; }
public float[] AttackRange { get; set; }
}
[Serializable]
public sealed class BaseCompItemData : TowerCompItemData
{
public BaseCompItemData()
{
SlotType = TowerCompSlotType.Base;
}
public float[] AttackSpeed { get; set; }
public AttackPropertyType AttackPropertyType { get; set; }
}
[Serializable]
public sealed class AccessoryItemData : TowerCompItemData
{
public AccessoryItemData()
{
SlotType = TowerCompSlotType.Accessory;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9f95a29d5bcf484aa053af1462365936
timeCreated: 1772105401

View File

@ -0,0 +1,11 @@
namespace GeometryTD.Definition
{
public enum TowerCompSlotType : byte
{
None = 0,
Muzzle = 1,
Bearing = 2,
Base = 3,
Accessory = 4,
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a34cbb64aede4531b1d0e178352006bb
timeCreated: 1772105400

View File

@ -31,5 +31,10 @@
/// 事件节点界面。
/// </summary>
EventForm = 200,
/// <summary>
/// 仓库界面。
/// </summary>
RepoForm = 201,
}
}

View File

@ -0,0 +1,26 @@
using GameFramework;
using GameFramework.Event;
namespace GeometryTD.CustomEvent
{
public class CombineSlotClickedEventArgs : GameEventArgs
{
public static int EventId => typeof(CombineSlotClickedEventArgs).GetHashCode();
public override int Id => EventId;
public int SlotIndex { get; private set; } = -1;
public static CombineSlotClickedEventArgs Create(int slotIndex)
{
CombineSlotClickedEventArgs args = ReferencePool.Acquire<CombineSlotClickedEventArgs>();
args.SlotIndex = slotIndex;
return args;
}
public override void Clear()
{
SlotIndex = -1;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ba4b42e0bcec06040b873823cf1be8d8
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 RepoItemSelectedEventArgs : GameEventArgs
{
public static int EventId => typeof(RepoItemSelectedEventArgs).GetHashCode();
public override int Id => EventId;
public long ItemId { get; private set; }
public static RepoItemSelectedEventArgs Create(long itemId)
{
RepoItemSelectedEventArgs args = ReferencePool.Acquire<RepoItemSelectedEventArgs>();
args.ItemId = itemId;
return args;
}
public override void Clear()
{
ItemId = 0;
}
}
}

View File

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

View File

@ -0,0 +1,28 @@
using GameFramework;
using GameFramework.ObjectPool;
using GeometryTD.UI;
using UnityEngine;
namespace GeometryTD.PoolObjectBase
{
public class RepoItemObject : ObjectBase
{
public static RepoItemObject Create(object target)
{
RepoItemObject itemObject = ReferencePool.Acquire<RepoItemObject>();
itemObject.Initialize(target);
return itemObject;
}
protected override void Release(bool isShutdown)
{
RepoItem item = (RepoItem)Target;
if (item == null)
{
return;
}
Object.Destroy(item.gameObject);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ebb8e70bb59842de9695893d7794983f
timeCreated: 1772106311

View File

@ -1,6 +1,7 @@
using GameFramework.Fsm;
using GameFramework.Procedure;
using GeometryTD.Definition;
using GeometryTD.UI;
using UnityGameFramework.Runtime;
namespace GeometryTD.Procedure
@ -9,6 +10,8 @@ namespace GeometryTD.Procedure
{
public override bool UseNativeDialog => false;
private RepoFormUseCase _repoFormUseCase;
public bool GameStart { get; set; }
#region FSM
@ -25,6 +28,12 @@ namespace GeometryTD.Procedure
GameStart = false;
GameEntry.EventNode.OnInit();
GameEntry.CombatNode.OnInit(LevelThemeType.Plain);
//GameEntry.EventNode.StartEvent();
_repoFormUseCase = new RepoFormUseCase();
GameEntry.UIRouter.BindUIUseCase(UIFormType.RepoForm, _repoFormUseCase);
GameEntry.UIRouter.OpenUI(UIFormType.RepoForm);
}
protected override void OnUpdate(IFsm<IProcedureManager> procedureOwner, float elapseSeconds,

View File

@ -108,10 +108,6 @@ namespace GeometryTD.UI
foreach (var text in tmp_texts)
{
text.font = _mainTMPFont;
if (!string.IsNullOrEmpty(text.text))
{
text.text = GameEntry.Localization.GetString(text.text);
}
}
}
@ -125,10 +121,6 @@ namespace GeometryTD.UI
foreach (var text in texts)
{
text.font = _mainFont;
if (!string.IsNullOrEmpty(text.text))
{
text.text = GameEntry.Localization.GetString(text.text);
}
}
}
}

View File

@ -22,6 +22,22 @@ namespace GeometryTD.UI
[SerializeField] private bool _allowFade = true;
private bool _interactive = true;
public bool Interactive
{
get => _interactive;
set
{
_interactive = value;
if (!value)
{
StopAllCoroutines();
_canvasGroup.alpha = 1f;
}
}
}
private CanvasGroup _canvasGroup = null;
private void Awake()
@ -36,6 +52,8 @@ namespace GeometryTD.UI
public void OnPointerEnter(PointerEventData eventData)
{
if (!Interactive) return;
if (eventData.button != PointerEventData.InputButton.Left)
{
return;
@ -49,6 +67,8 @@ namespace GeometryTD.UI
public void OnPointerExit(PointerEventData eventData)
{
if (!Interactive) return;
if (eventData.button != PointerEventData.InputButton.Left)
{
return;
@ -62,6 +82,8 @@ namespace GeometryTD.UI
public void OnPointerDown(PointerEventData eventData)
{
if (!Interactive) return;
if (eventData.button != PointerEventData.InputButton.Left)
{
return;
@ -73,6 +95,8 @@ namespace GeometryTD.UI
public void OnPointerUp(PointerEventData eventData)
{
if (!Interactive) return;
if (eventData.button != PointerEventData.InputButton.Left)
{
return;

View File

@ -0,0 +1,6 @@
namespace GeometryTD.UI
{
public class CombineAreaContext
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8b1bd513fdab4dc8b8b0a26fccbe44a2
timeCreated: 1772106303

View File

@ -0,0 +1,7 @@
namespace GeometryTD.UI
{
public class CompAreaContext
{
public RepoItemContext[] Items;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5c3c289363eb4ef0a591d4fcaf1ad293
timeCreated: 1772106302

View File

@ -0,0 +1,10 @@
using GeometryTD.UI;
namespace GeometryTD.UI
{
public class RepoFormContext : UIContext
{
public CombineAreaContext CombineAreaContext;
public CompAreaContext CompAreaContext;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bf3353a1d70c48f79fcbc64611e0085a
timeCreated: 1772106304

View File

@ -0,0 +1,11 @@
using GeometryTD.Definition;
namespace GeometryTD.UI
{
public class RepoItemContext
{
public string Title;
public long InstanceId;
public TowerCompSlotType ComponentSlotType;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3f20599444b448b1933d3b0cfb94ade2
timeCreated: 1772106301

View File

@ -0,0 +1,198 @@
using System.Collections.Generic;
using GeometryTD.CustomEvent;
using GeometryTD.Definition;
using GameFramework.Event;
using UnityGameFramework.Runtime;
namespace GeometryTD.UI
{
public class RepoFormController : UIFormControllerCommonBase<RepoFormContext, RepoForm>
{
private RepoFormUseCase _useCase;
private readonly Dictionary<long, RepoItemContext> _itemContextMap = new Dictionary<long, RepoItemContext>();
protected override UIFormType UIFormTypeId => UIFormType.RepoForm;
protected override void RefreshUI(RepoForm form, RepoFormContext context)
{
form.RefreshUI(context);
}
protected override void SubscribeCustomEvents()
{
GameEntry.Event.Subscribe(RepoItemSelectedEventArgs.EventId, OnRepoItemSelected);
GameEntry.Event.Subscribe(CombineSlotClickedEventArgs.EventId, OnCombineSlotClicked);
}
protected override void UnsubscribeCustomEvents()
{
GameEntry.Event.Unsubscribe(RepoItemSelectedEventArgs.EventId, OnRepoItemSelected);
GameEntry.Event.Unsubscribe(CombineSlotClickedEventArgs.EventId, OnCombineSlotClicked);
}
public override int? OpenUI(object userData = null)
{
if (userData is RepoFormContext repoFormContext)
{
return OpenUIInternal(repoFormContext);
}
if (userData is RepoFormRawData rawDataFromUserData)
{
return OpenUI(rawDataFromUserData);
}
if (userData != null)
{
Log.Warning("RepoFormController.OpenUI() userData type is invalid.");
return null;
}
if (_useCase == null)
{
Log.Error("RepoFormController.OpenUI() useCase is null.");
return null;
}
RepoFormRawData rawData = _useCase.CreateInitialModel();
return OpenUI(rawData);
}
public int? OpenUI(RepoFormRawData rawData)
{
RepoFormContext context = BuildContext(rawData);
return OpenUIInternal(context);
}
public override void BindUseCase(IUIUseCase useCase)
{
if (!(useCase is RepoFormUseCase repoFormUseCase))
{
Log.Error("RepoFormController.BindUseCase() useCase is invalid.");
return;
}
_useCase = repoFormUseCase;
}
private RepoFormContext BuildContext(RepoFormRawData rawData)
{
_itemContextMap.Clear();
if (rawData?.Inventory == null)
{
return null;
}
List<RepoItemContext> items = new List<RepoItemContext>();
if (rawData.Inventory.Towers != null)
{
foreach (var tower in rawData.Inventory.Towers)
{
AddItemContext(items, new RepoItemContext
{
Title = $"[Tower] {tower.Name} ({tower.Rarity})",
InstanceId = tower.InstanceId,
ComponentSlotType = TowerCompSlotType.None
});
}
}
if (rawData.Inventory.MuzzleComponents != null)
{
foreach (var item in rawData.Inventory.MuzzleComponents)
{
AddItemContext(items, new RepoItemContext
{
Title = $"[Muzzle] {item.Name} ({item.Rarity})",
InstanceId = item.InstanceId,
ComponentSlotType = TowerCompSlotType.Muzzle
});
}
}
if (rawData.Inventory.BearingComponents != null)
{
foreach (var item in rawData.Inventory.BearingComponents)
{
AddItemContext(items, new RepoItemContext
{
Title = $"[Bearing] {item.Name} ({item.Rarity})",
InstanceId = item.InstanceId,
ComponentSlotType = TowerCompSlotType.Bearing
});
}
}
if (rawData.Inventory.BaseComponents != null)
{
foreach (var item in rawData.Inventory.BaseComponents)
{
AddItemContext(items, new RepoItemContext
{
Title = $"[Base] {item.Name} ({item.Rarity})",
InstanceId = item.InstanceId,
ComponentSlotType = TowerCompSlotType.Base
});
}
}
return new RepoFormContext
{
CombineAreaContext = new CombineAreaContext(),
CompAreaContext = new CompAreaContext
{
Items = items.ToArray()
}
};
}
private void AddItemContext(List<RepoItemContext> items, RepoItemContext itemContext)
{
if (itemContext == null)
{
return;
}
items.Add(itemContext);
_itemContextMap[itemContext.InstanceId] = itemContext;
}
private void OnRepoItemSelected(object sender, GameEventArgs e)
{
if (!(e is RepoItemSelectedEventArgs args))
{
return;
}
if (Form == null || !_itemContextMap.TryGetValue(args.ItemId, out RepoItemContext itemContext))
{
return;
}
bool assigned = Form.TryAssignItemToCombineArea(itemContext);
if (assigned)
{
Form.SetRepoItemSelected(args.ItemId, true);
}
}
private void OnCombineSlotClicked(object sender, GameEventArgs e)
{
if (!(e is CombineSlotClickedEventArgs args))
{
return;
}
if (Form == null)
{
return;
}
if (Form.TryClearCombineSlot(args.SlotIndex, out long removedItemId) && removedItemId > 0)
{
Form.SetRepoItemSelected(removedItemId, false);
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6c2172dd10a54c2dbbf6d01632ba6a8b
timeCreated: 1772106306

View File

@ -0,0 +1,9 @@
using GeometryTD.Definition;
namespace GeometryTD.UI
{
public class RepoFormRawData
{
public BackpackInventoryData Inventory;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: efed1063c6334c90b09475548c2b560e
timeCreated: 1772106300

View File

@ -0,0 +1,115 @@
using System.Collections.Generic;
using GeometryTD.Definition;
namespace GeometryTD.UI
{
public class RepoFormUseCase : IUIUseCase
{
public RepoFormRawData CreateInitialModel()
{
BackpackInventoryData sample = BuildSampleInventory();
return new RepoFormRawData
{
Inventory = sample
};
}
private static BackpackInventoryData BuildSampleInventory()
{
BackpackInventoryData inventory = new BackpackInventoryData
{
Gold = 500
};
MuzzleCompItemData muzzle = new MuzzleCompItemData
{
InstanceId = 10001,
ConfigId = 1,
Name = "元素枪口",
Rarity = RarityType.Green,
Endurance = 90f,
AttackDamage = new[] { 20, 30, 40, 50, 80 },
DamageRandomRate = 0.05f,
AttackMethodType = AttackMethodType.NormalBullet,
Constraint = string.Empty,
Tags = new[] { TagType.Fire }
};
inventory.MuzzleComponents.Add(muzzle);
BearingCompItemData bearing = new BearingCompItemData
{
InstanceId = 20001,
ConfigId = 1,
Name = "元素轴承",
Rarity = RarityType.Green,
Endurance = 95f,
RotateSpeed = new[] { 10f, 12f, 13f, 14f, 15f },
AttackRange = new[] { 2f, 2f, 2f, 2f, 2f },
Constraint = string.Empty,
Tags = new[] { TagType.Fire }
};
inventory.BearingComponents.Add(bearing);
BaseCompItemData baseComp = new BaseCompItemData
{
InstanceId = 30001,
ConfigId = 1,
Name = "元素底座",
Rarity = RarityType.Green,
Endurance = 88f,
AttackSpeed = new[] { 2f, 1.5f, 1f, 0.8f, 0.7f },
AttackPropertyType = AttackPropertyType.Fire,
Constraint = string.Empty,
Tags = new[] { TagType.Fire }
};
inventory.BaseComponents.Add(baseComp);
DefenseTowerItemData tower = new DefenseTowerItemData
{
InstanceId = 90001,
Name = "测试防御塔-A",
Rarity = RarityType.Green,
Endurance = 92f,
MuzzleComponentInstanceId = muzzle.InstanceId,
BearingComponentInstanceId = bearing.InstanceId,
BaseComponentInstanceId = baseComp.InstanceId,
Stats = new DefenseTowerStatsData
{
AttackDamage = 30,
DamageRandomRate = 0.05f,
RotateSpeed = 12f,
AttackRange = 2f,
AttackSpeed = 1.5f,
AttackMethodType = AttackMethodType.NormalBullet,
AttackPropertyType = AttackPropertyType.Fire,
Tags = new[] { TagType.Fire, TagType.BurnSpread }
}
};
inventory.Towers.Add(tower);
inventory.Towers.Add(new DefenseTowerItemData
{
InstanceId = 90002,
Name = "测试防御塔-B",
Rarity = RarityType.Blue,
Endurance = 100f,
MuzzleComponentInstanceId = 0,
BearingComponentInstanceId = 0,
BaseComponentInstanceId = 0,
Stats = new DefenseTowerStatsData
{
AttackDamage = 50,
DamageRandomRate = 0.03f,
RotateSpeed = 20f,
AttackRange = 4f,
AttackSpeed = 1f,
AttackMethodType = AttackMethodType.NormalBullet,
AttackPropertyType = AttackPropertyType.Physics,
Tags = new[] { TagType.Pierce }
}
});
return inventory;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ad54433a032e489f82217d85992a8159
timeCreated: 1772106305

View File

@ -0,0 +1,102 @@
using GeometryTD.Definition;
using UnityEngine;
namespace GeometryTD.UI
{
public class CombineArea : MonoBehaviour
{
[SerializeField] private CombineSlotItem[] _slots;
public void OnInit(CombineAreaContext context)
{
if (_slots == null)
{
return;
}
for (int i = 0; i < _slots.Length; i++)
{
if (_slots[i] != null)
{
_slots[i].OnInit(i);
}
}
}
public void OnReset()
{
if (_slots == null)
{
return;
}
foreach (var slot in _slots)
{
if (slot != null)
{
slot.OnReset();
}
}
}
public void OnCombineClick()
{
// TODO: Combine logic.
}
public bool TryAssignItem(RepoItemContext itemContext)
{
if (itemContext == null || itemContext.ComponentSlotType == TowerCompSlotType.None)
{
return false;
}
CombineSlotItem targetSlot = FindSlot(itemContext.ComponentSlotType);
if (targetSlot == null || targetSlot.HasItem)
{
return false;
}
targetSlot.BindItem(itemContext);
return true;
}
public bool TryClearSlot(int slotIndex, out long removedItemId)
{
removedItemId = 0;
if (_slots == null || slotIndex < 0 || slotIndex >= _slots.Length)
{
return false;
}
CombineSlotItem slot = _slots[slotIndex];
if (slot == null || !slot.HasItem)
{
return false;
}
removedItemId = slot.BoundItemId;
slot.ClearSlot();
return true;
}
private CombineSlotItem FindSlot(TowerCompSlotType slotType)
{
if (_slots == null)
{
return null;
}
for (int i = 0; i < _slots.Length; i++)
{
CombineSlotItem slot = _slots[i];
if (slot != null && slot.AcceptSlotType == slotType)
{
return slot;
}
}
return null;
}
}
}

View File

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

View File

@ -0,0 +1,82 @@
using GeometryTD.CustomEvent;
using GeometryTD.Definition;
using TMPro;
using UnityEngine;
namespace GeometryTD.UI
{
public class CombineSlotItem : MonoBehaviour
{
[SerializeField] private TowerCompSlotType _acceptSlotType = TowerCompSlotType.None;
[SerializeField] private TMP_Text _titleText;
[SerializeField] private CommonButton _button;
private string _defaultTitle = string.Empty;
private long _boundItemId;
private int _slotIndex = -1;
public TowerCompSlotType AcceptSlotType => _acceptSlotType;
public bool HasItem => _boundItemId > 0;
public int SlotIndex => _slotIndex;
public long BoundItemId => _boundItemId;
private void Awake()
{
if (_titleText != null)
{
_defaultTitle = _titleText.text;
}
}
public void OnInit(int slotIndex)
{
_slotIndex = slotIndex;
ClearSlot();
}
public void BindItem(RepoItemContext itemContext)
{
_boundItemId = itemContext?.InstanceId ?? 0;
_button.Interactive = true;
if (_titleText != null)
{
_titleText.text = itemContext?.Title ?? string.Empty;
}
}
public void ClearSlot()
{
_boundItemId = 0;
_button.Interactive = false;
if (_titleText != null)
{
_titleText.text = _defaultTitle;
}
}
public void OnReset()
{
_slotIndex = -1;
ClearSlot();
}
public void OnClick()
{
if (_slotIndex < 0)
{
return;
}
GameEntry.Event.Fire(this, CombineSlotClickedEventArgs.Create(_slotIndex));
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b172c08f0d9b46d3b2cb108a1cc67377
timeCreated: 1772107100

View File

@ -0,0 +1,126 @@
using System.Collections.Generic;
using GameFramework.ObjectPool;
using GeometryTD.PoolObjectBase;
using UnityEngine;
using UnityGameFramework.Runtime;
namespace GeometryTD.UI
{
public class CompArea : MonoBehaviour
{
[SerializeField] private Transform m_Content;
[SerializeField] private RepoItem m_ItemTemplate;
[SerializeField] private int m_InstancePoolCapacity = 64;
private readonly List<RepoItem> m_ActiveItems = new List<RepoItem>();
private readonly Dictionary<long, RepoItem> m_ItemMap = new Dictionary<long, RepoItem>();
private IObjectPool<RepoItemObject> m_ItemPool;
private string m_PoolName;
public void OnInit(CompAreaContext context)
{
if (context == null)
{
OnReset();
return;
}
EnsurePool();
OnReset();
if (context.Items == null || context.Items.Length == 0)
{
return;
}
for (int i = 0; i < context.Items.Length; i++)
{
RepoItem item = CreateOrSpawnItem();
if (item == null)
{
continue;
}
item.gameObject.SetActive(true);
item.OnInit(context.Items[i]);
m_ActiveItems.Add(item);
m_ItemMap[context.Items[i].InstanceId] = item;
}
}
public void OnReset()
{
for (int i = m_ActiveItems.Count - 1; i >= 0; i--)
{
RepoItem item = m_ActiveItems[i];
if (item == null)
{
continue;
}
item.OnReset();
item.gameObject.SetActive(false);
m_ItemPool?.Unspawn(item);
}
m_ActiveItems.Clear();
m_ItemMap.Clear();
}
private void OnDestroy()
{
OnReset();
m_ItemPool?.ReleaseAllUnused();
}
private void EnsurePool()
{
if (m_ItemPool != null)
{
return;
}
m_PoolName = $"RepoItemPool_{GetInstanceID()}";
m_ItemPool = GameEntry.ObjectPool.CreateSingleSpawnObjectPool<RepoItemObject>(m_PoolName, m_InstancePoolCapacity);
}
private RepoItem CreateOrSpawnItem()
{
if (m_ItemPool == null)
{
return null;
}
RepoItemObject itemObject = m_ItemPool.Spawn();
RepoItem item = itemObject != null ? (RepoItem)itemObject.Target : null;
if (item == null)
{
if (m_ItemTemplate == null)
{
Log.Warning("CompArea requires an item template.");
return null;
}
item = Instantiate(m_ItemTemplate);
m_ItemPool.Register(RepoItemObject.Create(item), true);
}
if (m_Content != null)
{
item.transform.SetParent(m_Content, false);
}
return item;
}
public void SetItemSelected(long itemId, bool isSelected)
{
if (!m_ItemMap.TryGetValue(itemId, out RepoItem item))
{
return;
}
item.SetSelected(isSelected);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f3b1aede0e52479995cf71ba52a69d63
timeCreated: 1772106310

View File

@ -6,26 +6,27 @@ namespace GeometryTD.UI
{
public class EventForm : UGuiForm
{
[SerializeField] private TMP_Text m_TitleText;
[SerializeField] private TMP_Text m_DescriptionText;
[SerializeField] private EventOptionItem[] m_OptionItems;
[SerializeField] private TMP_Text _titleText;
[SerializeField] private TMP_Text _descriptionText;
[SerializeField] private EventOptionItem[] _optionItems;
private EventFormContext _context;
private EventFormContext m_Context;
public void RefreshUI(EventFormContext context)
{
m_Context = context;
_context = context;
if (m_TitleText != null)
if (_titleText != null)
{
m_TitleText.text = context?.Title ?? string.Empty;
_titleText.text = context?.Title ?? string.Empty;
}
if (m_DescriptionText != null)
if (_descriptionText != null)
{
m_DescriptionText.text = context?.Description ?? string.Empty;
_descriptionText.text = context?.Description ?? string.Empty;
}
for (int i = 0; i < m_OptionItems.Length; i++)
for (int i = 0; i < _optionItems.Length; i++)
{
EventOptionItemContext optionContext = null;
if (context?.OptionItems != null && i < context.OptionItems.Length)
@ -33,9 +34,9 @@ namespace GeometryTD.UI
optionContext = context.OptionItems[i];
}
if (m_OptionItems[i] != null)
if (_optionItems[i] != null)
{
m_OptionItems[i].OnInit(optionContext);
_optionItems[i].OnInit(optionContext);
}
}
}
@ -55,27 +56,27 @@ namespace GeometryTD.UI
protected override void OnClose(bool isShutdown, object userData)
{
m_Context = null;
_context = null;
if (m_TitleText != null)
if (_titleText != null)
{
m_TitleText.text = string.Empty;
_titleText.text = string.Empty;
}
if (m_DescriptionText != null)
if (_descriptionText != null)
{
m_DescriptionText.text = string.Empty;
_descriptionText.text = string.Empty;
}
for (int i = 0; i < m_OptionItems.Length; i++)
foreach (var item in _optionItems)
{
if (m_OptionItems[i] != null)
if (item != null)
{
m_OptionItems[i].OnReset();
item.OnReset();
}
}
base.OnClose(isShutdown, userData);
}
}
}
}

View File

@ -0,0 +1,67 @@
using UnityEngine;
using UnityGameFramework.Runtime;
namespace GeometryTD.UI
{
public class RepoForm : UGuiForm
{
[SerializeField] private CombineArea _combineArea;
[SerializeField] private CompArea _compArea;
public void RefreshUI(RepoFormContext context)
{
if (context == null)
{
return;
}
_combineArea?.OnInit(context.CombineAreaContext);
_compArea?.OnInit(context.CompAreaContext);
}
public bool TryAssignItemToCombineArea(RepoItemContext itemContext)
{
if (_combineArea == null)
{
return false;
}
return _combineArea.TryAssignItem(itemContext);
}
public bool TryClearCombineSlot(int slotIndex, out long removedItemId)
{
removedItemId = 0;
if (_combineArea == null)
{
return false;
}
return _combineArea.TryClearSlot(slotIndex, out removedItemId);
}
public void SetRepoItemSelected(long itemId, bool isSelected)
{
_compArea?.SetItemSelected(itemId, isSelected);
}
protected override void OnOpen(object userData)
{
base.OnOpen(userData);
if (userData is RepoFormContext context)
{
RefreshUI(context);
return;
}
Log.Warning("RepoForm requires RepoFormContext as userData.");
}
protected override void OnClose(bool isShutdown, object userData)
{
_combineArea?.OnReset();
_compArea?.OnReset();
base.OnClose(isShutdown, userData);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e10fdbb413c14f5eb749888590f56ff7
timeCreated: 1772106307

View File

@ -0,0 +1,69 @@
using GeometryTD.CustomEvent;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityGameFramework.Runtime;
namespace GeometryTD.UI
{
public class RepoItem : MonoBehaviour
{
[SerializeField] private TMP_Text _titleText;
[SerializeField] private Image _highlightImage;
private static readonly Color NormalColor = new Color32(40, 40, 40, 180);
private static readonly Color SelectedColor = new Color32(255, 216, 102, 255);
private RepoItemContext _context;
public void OnInit(RepoItemContext context)
{
if (context == null)
{
OnReset();
return;
}
_context = context;
if (_titleText != null)
{
_titleText.text = context.Title ?? string.Empty;
}
SetSelected(false);
}
public void OnReset()
{
_context = null;
if (_titleText != null)
{
_titleText.text = string.Empty;
}
SetSelected(false);
}
public void SetSelected(bool isSelected)
{
if (_highlightImage == null)
{
return;
}
_highlightImage.color = isSelected ? SelectedColor : NormalColor;
}
public void OnClick()
{
if (_context == null)
{
return;
}
GameEntry.Event.Fire(this, RepoItemSelectedEventArgs.Create(_context.InstanceId));
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ba332072a148499b8f6ec886c661c00f
timeCreated: 1772106309

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -0,0 +1,340 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3111276155796806199
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7862994607866941546}
- component: {fileID: 7266921873280243303}
- component: {fileID: 404339747398545690}
- component: {fileID: 2706921999057492063}
- component: {fileID: 3964256412025788182}
m_Layer: 5
m_Name: CombineSlotItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7862994607866941546
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3111276155796806199}
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: 2397752802958303923}
- {fileID: 4236659083525452299}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 430}
m_SizeDelta: {x: 250, y: 250}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7266921873280243303
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3111276155796806199}
m_CullTransparentMesh: 1
--- !u!114 &404339747398545690
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3111276155796806199}
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.5, g: 0.5, b: 0.5, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &2706921999057492063
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3111276155796806199}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b172c08f0d9b46d3b2cb108a1cc67377, type: 3}
m_Name:
m_EditorClassIdentifier:
_acceptSlotType: 1
_titleText: {fileID: 3612975293499812022}
_button: {fileID: 3964256412025788182}
--- !u!114 &3964256412025788182
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3111276155796806199}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a5079836f95c2a44b96fa331487ebb70, type: 3}
m_Name:
m_EditorClassIdentifier:
_onHover:
m_PersistentCalls:
m_Calls: []
_onClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2706921999057492063}
m_TargetAssemblyTypeName: GeometryTD.UI.CombineSlotItem, Assembly-CSharp
m_MethodName: OnClick
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
_onHoverEnd:
m_PersistentCalls:
m_Calls: []
_allowFade: 1
--- !u!1 &3938280301502428884
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2397752802958303923}
- component: {fileID: 6469071216187463709}
- component: {fileID: 3612975293499812022}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2397752802958303923
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3938280301502428884}
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: 7862994607866941546}
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 &6469071216187463709
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3938280301502428884}
m_CullTransparentMesh: 1
--- !u!114 &3612975293499812022
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3938280301502428884}
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: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, 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: 50
m_fontSizeBase: 50
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_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 &8390946068916850919
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4236659083525452299}
- component: {fileID: 4243337373132393352}
- component: {fileID: 3749676913783659753}
m_Layer: 5
m_Name: Board
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4236659083525452299
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8390946068916850919}
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: 7862994607866941546}
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 &4243337373132393352
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8390946068916850919}
m_CullTransparentMesh: 1
--- !u!114 &3749676913783659753
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8390946068916850919}
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

View File

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

View File

@ -0,0 +1,272 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &770565994539545022
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4491355866364659447}
- component: {fileID: 4067353614215461310}
m_Layer: 5
m_Name: CommonButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4491355866364659447
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 770565994539545022}
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: 4091200509648533696}
- {fileID: 7744090569424522082}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 400, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &4067353614215461310
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 770565994539545022}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a5079836f95c2a44b96fa331487ebb70, type: 3}
m_Name:
m_EditorClassIdentifier:
_onHover:
m_PersistentCalls:
m_Calls: []
_onClick:
m_PersistentCalls:
m_Calls: []
_onHoverEnd:
m_PersistentCalls:
m_Calls: []
_allowFade: 1
--- !u!1 &7607456171798064113
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7744090569424522082}
- component: {fileID: 4218356221485926369}
- component: {fileID: 1920576543566152029}
m_Layer: 5
m_Name: text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7744090569424522082
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7607456171798064113}
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: 4491355866364659447}
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 &4218356221485926369
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7607456171798064113}
m_CullTransparentMesh: 1
--- !u!114 &1920576543566152029
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7607456171798064113}
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: New Text
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: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, 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
m_fontSizeBase: 45
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_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 &7888786393168201163
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4091200509648533696}
- component: {fileID: 4897426084967953723}
- component: {fileID: 1341699087252484061}
m_Layer: 5
m_Name: board
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4091200509648533696
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7888786393168201163}
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: 4491355866364659447}
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 &4897426084967953723
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7888786393168201163}
m_CullTransparentMesh: 1
--- !u!114 &1341699087252484061
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7888786393168201163}
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

View File

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

View File

@ -0,0 +1,322 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &487684906650345569
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3539825771606270033}
- component: {fileID: 8173262321001087266}
- component: {fileID: 4426363595643300393}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3539825771606270033
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 487684906650345569}
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: 1685541589794304279}
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: -40, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8173262321001087266
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 487684906650345569}
m_CullTransparentMesh: 1
--- !u!114 &4426363595643300393
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 487684906650345569}
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: "\u4E0B\u6CE8 100\uFF08\u91D1\uFF09- \u7A33\u5065\uFF1A70% \u8D62 150"
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: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, 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: 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 &3180941679800374814
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5086635773768086385}
- component: {fileID: 3917697806521583894}
- component: {fileID: 1369856979554810496}
m_Layer: 5
m_Name: Board
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5086635773768086385
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3180941679800374814}
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: 1685541589794304279}
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 &3917697806521583894
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3180941679800374814}
m_CullTransparentMesh: 1
--- !u!114 &1369856979554810496
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3180941679800374814}
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 &8776023123167703391
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1685541589794304279}
- component: {fileID: 7900603847803313461}
- component: {fileID: 1570933199153120844}
m_Layer: 5
m_Name: OptionItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1685541589794304279
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8776023123167703391}
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: 5086635773768086385}
- {fileID: 3539825771606270033}
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: 1200, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &7900603847803313461
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8776023123167703391}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 86cf465d14c649a58473c19ae946d220, type: 3}
m_Name:
m_EditorClassIdentifier:
_optionText: {fileID: 4426363595643300393}
--- !u!114 &1570933199153120844
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8776023123167703391}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a5079836f95c2a44b96fa331487ebb70, type: 3}
m_Name:
m_EditorClassIdentifier:
_onHover:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 0}
m_TargetAssemblyTypeName: GeometryTD.UI.UGuiForm, Assembly-CSharp
m_MethodName: PlayUISound
m_Mode: 3
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 10000
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
_onClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 0}
m_TargetAssemblyTypeName: GeometryTD.UI.UGuiForm, Assembly-CSharp
m_MethodName: PlayUISound
m_Mode: 3
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 10001
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
- m_Target: {fileID: 7900603847803313461}
m_TargetAssemblyTypeName: GeometryTD.UI.EventOptionItem, Assembly-CSharp
m_MethodName: OnClick
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
_onHoverEnd:
m_PersistentCalls:
m_Calls: []
_allowFade: 1

View File

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

View File

@ -0,0 +1,330 @@
%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: 0
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
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1975505172905695105}
- component: {fileID: 617747730667399833}
- component: {fileID: 8394974685918372820}
m_Layer: 5
m_Name: RepoItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1975505172905695105
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8845098964186727177}
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: 3419514439234906529}
- {fileID: 8117380140389307156}
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: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &617747730667399833
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8845098964186727177}
m_CullTransparentMesh: 1
--- !u!114 &8394974685918372820
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8845098964186727177}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ba332072a148499b8f6ec886c661c00f, type: 3}
m_Name:
m_EditorClassIdentifier:
_titleText: {fileID: 830716417586720267}
_highlightImage: {fileID: 6348008773882294268}
--- !u!1001 &1234001823675854678
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 1975505172905695105}
m_Modifications:
- target: {fileID: 770565994539545022, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_Name
value: CommonButton
objectReference: {fileID: 0}
- target: {fileID: 1341699087252484061, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: 9f847ec5e66e03e4ead1d3c5f7b510e8,
type: 3}
- target: {fileID: 1341699087252484061, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_Color.b
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1341699087252484061, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_Color.g
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1341699087252484061, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_Color.r
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: 8394974685918372820}
- target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
value: 2
objectReference: {fileID: 0}
- target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: OnClick
objectReference: {fileID: 0}
- target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: GeometryTD.UI.RepoItem, Assembly-CSharp
objectReference: {fileID: 0}
- target: {fileID: 4067353614215461310, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
value: UnityEngine.Object, UnityEngine
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2307f223279813546a43b221ddd496cc, type: 3}
--- !u!114 &830716417586720267 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 1920576543566152029, 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: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!224 &3419514439234906529 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 4491355866364659447, guid: 2307f223279813546a43b221ddd496cc,
type: 3}
m_PrefabInstance: {fileID: 1234001823675854678}
m_PrefabAsset: {fileID: 0}

View File

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

File diff suppressed because it is too large Load Diff