using System.Collections.Generic; using UnityEngine; [System.Serializable] public enum ResourceKind { Stone, faith, wood, } [CreateAssetMenu(fileName = "科技节点", menuName = "科技树/科技节点")] [System.Serializable] public class TechItem : ScriptableObject { [System.Serializable] public struct NeedReource { public ResourceKind kind; public int Count; } [Header("父节点")] public List parent; // 每个节点有一个父节点 [Header("子节点列表")] public List children = new List(); // 子节点列表 [Header("已经解锁")] public bool LockOver; [Header("主干")] public bool MainTech; [Header("科技节点名称")] public string itemName; [Header("描述")] [TextArea(3, 5)] public string Describe; [TextArea(1, 3)] public string FunDescription; [Header("解锁所需资源列表")] public List needReources; [Header("降神次数")] public GodComingTimes GodTimes; /// /// 科技解锁 /// public void LockTech() { LockOver = true; for (int i = 0; i < needReources.Count; i++) { CutResource(needReources[i]); } } public bool ResourceEnough() { bool Enough = true; for (int i = 0; i < needReources.Count; i++) { NeedReource needReource = needReources[i]; switch (needReource.kind) { case ResourceKind.Stone: Enough = GameProcedureManager.Instance.StoneCount >= needReource.Count; break; case ResourceKind.faith: Enough= GameProcedureManager.Instance.FaithCount >= needReource.Count; break; case ResourceKind.wood: Enough=GameProcedureManager.Instance.WoodCount >= needReource.Count; break; default: break; } if (Enough==false) { return Enough; } } return Enough; } /// /// 消耗对应资源 /// public void CutResource(NeedReource needReource) { switch (needReource.kind) { case ResourceKind.Stone: GameProcedureManager.Instance.StoneCount -= needReource.Count; break; case ResourceKind.faith: GameProcedureManager.Instance.FaithCount -= needReource.Count; break; case ResourceKind.wood: GameProcedureManager.Instance.WoodCount -= needReource.Count; break; default: break; } } }