public void AddQustUI(QuestManager.QuestBase quest) { GameObject questButton = Instantiate(QuestButton); questButton.name = quest.ID.ToString(); questButton.transform.SetParent(QuestListUI.transform, false); Image iconImage = questButton.transform.Find("icon").GetComponent <Image>(); Slider prograssBar = questButton.transform.Find("progress").GetComponent <Slider>(); Transform hint = questButton.transform.Find("hint"); iconImage.sprite = Materiral.GetIconByName(quest.Smallicon); prograssBar.value = (float)PlayerInfo.GetQuestProgress(quest.ID) / quest.QuestComplete.Num; //如果已经完成 if (prograssBar.value >= 1) { hint.gameObject.SetActive(true); AniController.Get(hint.gameObject).AddSprite(hintsprites); hint.GetComponent <Image>().color = Color.green; AniController.Get(hint.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5); } EventTriggerListener.Get(questButton).onClick = OpenQuestBoard; }
//读取任务配置 public ArrayList loadQuestXmlToArray() { //保存路径 string filepath = "Config/Quest/QuestList"; string _result = Resources.Load(filepath).ToString(); ArrayList List = new ArrayList(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(_result); XmlNodeList nodeList = xmlDoc.SelectSingleNode("QuestList").ChildNodes; foreach (XmlElement quest in nodeList) { QuestManager.QuestBase _quest = new QuestManager.QuestBase(); //读取node内属性,把string转化为对应的属性 if (quest.GetAttribute("ID") != "") { _quest.ID = int.Parse(quest.GetAttribute("ID")); } if (quest.GetAttribute("Questgroup") != "") { _quest.Questgroup = int.Parse(quest.GetAttribute("Questgroup")); } if (quest.GetAttribute("GroupID") != "") { _quest.GroupID = int.Parse(quest.GetAttribute("GroupID")); } if (quest.GetAttribute("Smallicon") != "") { _quest.Smallicon = quest.GetAttribute("Smallicon"); } if (quest.GetAttribute("Bigicon") != "") { _quest.Bigicon = quest.GetAttribute("Bigicon"); } if (quest.GetAttribute("Name") != "") { _quest.name = quest.GetAttribute("Name"); } if (quest.GetAttribute("Des") != "") { _quest.des = quest.GetAttribute("Des"); } if (quest.GetAttribute("CompleteDes") != "") { _quest.completedes = quest.GetAttribute("CompleteDes"); } for (int i = 0; i < quest.ChildNodes.Count; i++) { XmlElement element = (XmlElement)quest.ChildNodes[i]; //暂时不需要前置条件 //if (element.Name == "Need") //{ // if (element.GetAttribute("Quest") != "") // _quest.QuestNeed.PreQuest = int.Parse(element.GetAttribute("Quest")); // if (element.GetAttribute("Goods") != "") // { // string[] Goods = element.GetAttribute("Goods").Split(','); // _quest.QuestNeed.NeedGoods = new int[Goods.Length]; // for (int j = 0; j < Goods.Length; j++) // { // _quest.QuestNeed.NeedGoods[j] = int.Parse(Goods[j]); // } // } //} if (element.Name == "Complete") { if (element.GetAttribute("QuestType") != "") { switch (element.GetAttribute("QuestType")) { case "PutGoods": _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.PutGoods; break; case "SellGoods": _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.SellGoods; break; case "ComposeGoods": _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.ComposeGoods; break; case "CollectGoods": _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.CollectGoods; break; case "ComposeProperty": _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.ComposeProperty; break; case "Arrive": _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.Arrive; break; case "Golds": _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.Golds; break; default: Debug.LogError("Unkown QuestType:" + element.GetAttribute("QuestType") + "!!!!"); break; } } if (element.GetAttribute("Num") != "") { _quest.QuestComplete.Num = int.Parse(element.GetAttribute("Num")); } if (element.GetAttribute("Parameter") != "") { string[] parameter = element.GetAttribute("Parameter").Split(','); _quest.QuestComplete.Parameter = new int[parameter.Length]; for (int j = 0; j < parameter.Length; j++) { _quest.QuestComplete.Parameter[j] = int.Parse(parameter[j]); } } } if (element.Name == "Award") { if (element.GetAttribute("Golds") != "") { _quest.Award.Gold = int.Parse(element.GetAttribute("Golds")); } if (element.GetAttribute("Exp") != "") { _quest.Award.Exp = int.Parse(element.GetAttribute("Exp")); } if (element.GetAttribute("Goods") != "") { string[] parameter = element.GetAttribute("Goods").Split(','); _quest.Award.Goods = new int[parameter.Length]; for (int j = 0; j < parameter.Length; j++) { _quest.Award.Goods[j] = int.Parse(parameter[j]); } } if (element.GetAttribute("GoodsNum") != "") { _quest.Award.GoodsNum = int.Parse(element.GetAttribute("GoodsNum")); } if (element.GetAttribute("Event") != "") { _quest.Award.Event = int.Parse(element.GetAttribute("Event")); } if (element.GetAttribute("TaskPoint") != "") { _quest.Award.TaskPoint = int.Parse(element.GetAttribute("TaskPoint")); } } } //添加进List中 List.Add(_quest); } return(List); }
public void OpenQuestBoard(int questID, float delyTime) { QuestManager.QuestBase quest = questManager.GetQuestInfoByID(questID); GameObject Board = Instantiate(QuestBoard); Board.name = quest.ID.ToString(); Board.transform.SetParent(QuestCanvas.transform, false); //获取面板组件 Image iconImage = Board.transform.Find("QuestBoard/icon").GetComponent <Image>(); Text questinfoText = Board.transform.Find("QuestBoard/questinfo/Text").GetComponent <Text>(); Text CompleteinfoText = Board.transform.Find("QuestBoard/questinfo/CompleteText").GetComponent <Text>(); Text questnameText = Board.transform.Find("QuestBoard/questName/questText").GetComponent <Text>(); Slider prograssBar = Board.transform.Find("QuestBoard/questName/progress").GetComponent <Slider>(); Text prograssBarText = Board.transform.Find("QuestBoard/questName/progress/progressText").GetComponent <Text>(); GameObject closebutton = Board.transform.Find("QuestBoard/Close").gameObject; Text closebuttonText = closebutton.transform.Find("Text").GetComponent <Text>(); GameObject Mask = Board.transform.Find("Mask").gameObject; GameObject questBoardBG = closebutton.transform.parent.gameObject; //Award Text awardGoldNum = Board.transform.Find("QuestBoard/award/GoldNum").GetComponent <Text>(); Text awardExpNum = Board.transform.Find("QuestBoard/award/ExpNum").GetComponent <Text>(); Image AwardGoodsImage = Board.transform.Find("QuestBoard/award/Goods").GetComponent <Image>(); Text AwardGoodsNum = Board.transform.Find("QuestBoard/award/GoodsNum").GetComponent <Text>(); //更新参数 iconImage.sprite = Materiral.GetIconByName(quest.Bigicon); questinfoText.text = TextParser.SpecialString(quest.des); questnameText.text = quest.name; awardGoldNum.text = "x" + quest.Award.Gold; awardExpNum.text = "x" + quest.Award.Exp; AwardGoodsImage.sprite = Materiral.GetMaterialIcon(quest.Award.Goods[0], quest.Award.Goods[1]); AwardGoodsNum.text = "x" + quest.Award.GoodsNum; prograssBar.value = (float)questManager.GetQuestProgress(quest.ID) / quest.QuestComplete.Num; prograssBarText.text = questManager.GetQuestProgress(quest.ID) + "/" + quest.QuestComplete.Num; //设置按钮响应 if (prograssBar.value >= 1) { if (PlayerInfo.GetNowscene() == quest.Award.TaskPoint) { //如果在任务地点则设置领取 closebutton.GetComponent <Image>().color = Color.green; closebuttonText.text = "领取"; EventTriggerListener.Get(closebutton).onClick = GetQuestAward; } else { //关闭按钮 closebutton.GetComponent <Image>().color = Color.white; closebuttonText.text = "关闭"; CompleteinfoText.text = quest.completedes; EventTriggerListener.Get(closebutton).onClick = CloseQuestBoard; } } else { //关闭按钮 closebutton.GetComponent <Image>().color = Color.white; closebuttonText.text = "关闭"; EventTriggerListener.Get(closebutton).onClick = CloseQuestBoard; } questBoardBG.transform.localPosition = new Vector2(0, Screen.height / 2 + 200); LeanTween.moveLocalY(closebutton.transform.parent.gameObject, 300, 0.5f).setEaseOutBack().setDelay(delyTime); }
void GetQuestAward(GameObject go) { Transform Board = go.transform.parent.parent; Transform root = Board.parent; Transform MoneyBoard = transform.Find("/ToolsKit/Canvas/PlayerInfo/glodBoard"); Transform mineBoard = transform.Find("/ToolsKit/Canvas/PlayerInfo/mineBoard"); //Award Transform awardGold = Board.transform.Find("QuestBoard/award/Gold"); Transform awardExp = Board.transform.Find("QuestBoard/award/Exp"); Transform AwardGoods = Board.transform.Find("QuestBoard/award/Goods"); QuestManager.QuestBase info = questManager.GetQuestInfoByID(int.Parse(Board.name)); //增加奖励 PlayerInfo.ChangeMoney(info.Award.Gold); for (int i = 0; i < info.Award.GoodsNum; i++) { CharBag.AddGoodsByID(info.Award.Goods[0], info.Award.Goods[1]); } //完成任务 PlayerInfo.AddCompleteQuest(info.ID); questManager.RemoveQuestToList(info.ID); //销毁任务面板的任务 Transform questbutton = QuestListUI.transform.Find(info.ID.ToString()); if (questbutton != null) { Destroy(questbutton.gameObject); } //生成金币 for (int i = 0; i < info.Award.Gold; i = i + 50) { Transform gold = Instantiate(awardGold, root); gold.position = awardGold.position; float randomrange = 100f; float time = 0.5f; LeanTween.moveY(gold.gameObject, gold.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine); LeanTween.moveX(gold.gameObject, gold.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine); LeanTween.moveX(gold.gameObject, MoneyBoard.position.x, time).setDelay(time * Random.Range(1.5f, 2f)); LeanTween.moveY(gold.gameObject, MoneyBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete( () => { Destroy(gold.gameObject); }); if (i > 500) { break; } } //生成经验 for (int i = 0; i < info.Award.Exp; i = i + 50) { Transform exp = Instantiate(awardExp, root); exp.position = awardExp.position; float randomrange = 100f; float time = 0.5f; LeanTween.moveY(exp.gameObject, exp.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine); LeanTween.moveX(exp.gameObject, exp.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine); LeanTween.moveX(exp.gameObject, mineBoard.position.x, time).setDelay(time * Random.Range(1.5f, 2f)); LeanTween.moveY(exp.gameObject, mineBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete( () => { Destroy(exp.gameObject); }); if (i > 500) { break; } } //生成物品 for (int i = 0; i < info.Award.GoodsNum; i++) { Transform goods = Instantiate(AwardGoods, root); goods.position = AwardGoods.position; float randomrange = 100f; float time = 0.5f; LeanTween.moveY(goods.gameObject, AwardGoods.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine); LeanTween.moveX(goods.gameObject, AwardGoods.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine); LeanTween.moveX(goods.gameObject, mineBoard.position.x + 100, time).setDelay(time * Random.Range(1.5f, 2f)); LeanTween.moveY(goods.gameObject, mineBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete( () => { Destroy(goods.gameObject); }); if (i > 10) { break; } } LeanTween.moveLocalY(go.transform.parent.gameObject, Screen.height / 2 + 200, 0.3f).setEaseInBack().setOnComplete(() => { Destroy(Board.gameObject); //添加完成的事件 if (info.Award.Event != 0) { eventmanager.AddStroyWithEventID(info.Award.Event); } if (!questManager.IsArriveWaitingCheckPoint(0)) { eventmanager.StartStory(); } }); //延迟更新显示 LeanTween.delayedCall(0.5f * 2f, () => { PlayerInfo.Info playerInfo = PlayerInfo.GetPlayerInfo(); MoneyBoard.Find("Text").GetComponent <Text>().text = playerInfo.Money.ToString(); }); }