Я создаю систему Quest в своей RPG (Ролевая игра), и она может пройти через NPC (персонаж без игрока). Я прикрепляю сценарий к своему главному персонажу, который может проверить, есть ли у вас квест от NPC. Вот код:Доступ к GameObject в Unity с различными копиями
public class QuestTracker : MonoBehaviour
{
public QuestGiver questGiver;
public Button AcceptQuest;
public OpenQuestWindow questWindow;
public void acceptQuest()
{
questGiver.questAccepted = true;
}
}
Теперь я приложил к своему NPC скрипт, чтобы дать квест игроку. Вот код для NPC:
public class QuestGiver : MonoBehaviour
{
public bool questAccepted = false;
}
Когда игрок нажимает на NPC, появится окно, которое покажет игроку, что будет его/ее цель квеста. На данный момент я создал 2 NPC и прикрепил их как скрипт QuestGiver. Вот некоторые скриншот:
кнопку Принять, я использовал функцию acceptQuest() на моем QuestTracker, который прилагается к игроку, но я не могу установить конкретное значение для QuestGiver потому что у меня есть несколько копий NPC, а не один.
То, что я хочу, чтобы установить QuestGiver на проигрывателе через время выполнения. Я знаю, что это может быть реализовано с помощью функции OnMouseOver() или Raycast. Я знаю логику, но я не знаю, как ее реализовать.
Действительно приятное решение O.o Мне нравится, как вы использовали OnMouseDown() преимущество. +1 – TuukkaX
У меня уже есть разный диалог для NPC, и это оказывается тем, что я хотел. –
Вы можете видеть questGiver в инспекторе, имея еще одну общедоступную переменную, называемую questGiverInspector типа QuestGiver, а затем просто пишите в void Update questGiverInspector = questGiver; –