如何在玩家单击"Accept Quest"后,在 UI 窗口中阻止我的 UI 多次出现?



现在,每当玩家继续任务并自行返回时,当玩家已经完成任务时,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

最新更新