using System.Collections; using System.Collections.Generic; using UnityEngine; #region 其他 public enum QuestType { 主线任务, 支线任务 } public enum QuestFinishType { 进行中,已完成 } public enum QuestNeedType { 交互,只能ImpactEffect } [System.Serializable] public class QuestNeed { [Tooltip("任务条件类型")] public QuestNeedType questNeedType; [Tooltip("任务条件对应的string值(目前指NPC名)")] public string stringValue; [Tooltip("对应的int值(没有就不填)")] public int intValue = 1; //public string NeedToString() //{ // switch (questNeedType) // { // case QuestNeedType.交互: // return questNeedType + "_" + stringValue; // case QuestNeedType.只能ImpactEffect: // return questNeedType + "_" + ; // break; // default: // break; // } //} } #endregion /// /// 任务数据 /// [CreateAssetMenu(menuName = "SO_Datas/QuestData_SO")] public class Quest_SO : ScriptableObject { [Tooltip("任务名")] public string QuestName; [Tooltip("任务描述")] [TextArea]public string QuestDescription;//任务描述 [Tooltip("任务达成条件描述")] [TextArea] public string QuestNeedDescription;//任务达成条件描述(偏正式) [Tooltip("是否只能领取一次")] public bool onlyOnce = false; [Tooltip("完成后直接移除")] public bool deleteFinish = false; [Tooltip("达成条件")] public QuestNeed questNeed; public QuestType questType;//任务类型 public ImpactValue[] QuestReward;//任务报酬 public string NeedToString() { switch (questNeed.questNeedType) { case QuestNeedType.交互: return questNeed.questNeedType + "_" + questNeed.stringValue; } return questNeed + "_" + QuestName + "_" + name ; } //任务完成时的效果 public void QuestFinish() { Debug.Log("任务完成:" + QuestName); //移除监听 QuestManager.GetInstance().QuestRemoveListener(this); //列表添加删除 GameDataManager.GetInstance().saveData.currentQuest.Remove(this); if (!deleteFinish) GameDataManager.GetInstance().saveData.finishedQuest.Add(this); //提示 UIManager.GetInstance().tipsInfoPanel.AddTipsInfo("【"+QuestName+"】已完成!"); //实现效果 foreach (var item in QuestReward) { IImpactEffect.Execute(item); } } //任务给予者 //完成条件 } /* [System.Serializable] public class QuestMono { public Quest_SO quest_SO; }*/