现在,每当玩家继续任务并自行返回时,当玩家已经完成任务时,UI窗口就会再次弹出,要求再次接受任务。我也不希望在玩家返回NPC收集奖励时弹出接受任务窗口,这就是为什么我只希望UI只能出现一次。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class QuestGiver : MonoBehaviour
{
public Quest quest;
public MovementTest player;
public GameObject questWindow;
public Text titleText;
public Text descriptionText;
public void OpenQuestWindow()
{
if (isQuestAccepted)
return;
questWindow.SetActive(true);
titleText.text = quest.title;
descriptionText.text = quest.description;
}
public void AcceptQuest()
{
questWindow.SetActive(false);
quest.isActive = true;
player.quest = quest;
}
void Start()
{
questWindow = GameObject.Find("QuestWindow");
questWindow.SetActive(false);
}
}
仅根据提供的代码,在接受任务时,isQuestAccepted
未被设置为true
。尝试在AcceptQuest
方法中添加它:
public void AcceptQuest()
{
isQuestAccepted = true;
questWindow.SetActive(false);
quest.isActive = true;
player.quest = quest;
}
为了确保,请提供更多关于isQuestAccepted
标志和调用OpenQuestWindow
触发器的详细信息
一般来说,有几点需要考虑:
从表面上看,该方法的执行在生命周期内被限制为一次
QuestGiver
。建议任务模型在执行之间具有一个持久值。是否有可能在提供的代码范围之外调用
questWindow.SetActive
?如果任务已经被接受,那么你不应该首先执行
OpenQuestWindow
。