Створіть систему квестів в Unity
Квести є основною частиною багатьох ігор, забезпечуючи гравцям цілі та нагороди. У цьому посібнику ви дізнаєтесь, як створити просту систему квестів у Unity. Ми розглянемо створення, відстеження та виконання квестів.
Налаштування проекту
Перш ніж почати кодування, давайте налаштуємо простий проект Unity:
- Створіть новий проект Unity.
- Створіть нову папку з назвою
Scripts
, щоб упорядкувати наші сценарії. - Створіть іншу папку з назвою
Resources
для зберігання даних наших квестів.
Створення квестового класу
Першим кроком є визначення класу Quest
для зберігання інформації про квест, такої як назва, опис і статус завершення.
using UnityEngine;
[System.Serializable]
public class Quest
{
public string title;
public string description;
public bool isCompleted;
public Quest(string title, string description)
{
this.title = title;
this.description = description;
this.isCompleted = false;
}
public void CompleteQuest()
{
isCompleted = true;
Debug.Log("Quest Completed: " + title);
}
}
Створення менеджера квестів
Далі нам потрібен менеджер, який буде займатися нашими квестами. Клас QuestManager
зберігатиме та керуватиме активними квестами.
using System.Collections.Generic;
using UnityEngine;
public class QuestManager : MonoBehaviour
{
public List<Quest> quests = new List<Quest>();
void Start()
{
// Example quests
quests.Add(new Quest("Find the Key", "Find the key to unlock the door."));
quests.Add(new Quest("Defeat the Dragon", "Defeat the dragon in the cave."));
}
public void CompleteQuest(string title)
{
Quest quest = quests.Find(q => q.title == title);
if (quest != null && !quest.isCompleted)
{
quest.CompleteQuest();
}
}
public List<Quest> GetActiveQuests()
{
return quests.FindAll(q => !q.isCompleted);
}
}
Відображення квестів в інтерфейсі користувача
Щоб відображати квести гравцеві, нам потрібен простий інтерфейс користувача. Створіть у своїй сцені елементи «Полотно» та «Текст», щоб показати список квестів.
using UnityEngine;
using UnityEngine.UI;
public class QuestUI : MonoBehaviour
{
public Text questListText;
private QuestManager questManager;
void Start()
{
questManager = FindObjectOfType<QuestManager>();
UpdateQuestList();
}
void UpdateQuestList()
{
questListText.text = "Quests:\n";
foreach (Quest quest in questManager.GetActiveQuests())
{
questListText.text += "- " + quest.title + ": " + quest.description + "\n";
}
}
}
Взаємодія з квестами
Давайте додамо деякі функції для взаємодії з нашими квестами. Наприклад, ми можемо додати кнопку для виконання квесту.
using UnityEngine;
public class QuestGiver : MonoBehaviour
{
public string questTitle;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
QuestManager questManager = FindObjectOfType<QuestManager>();
questManager.CompleteQuest(questTitle);
}
}
}
Тестування системи квестів
Щоб перевірити систему квестів, додайте QuestManager
і QuestUI
до вашої сцени. Створіть просту тригерну зону з прикріпленим сценарієм QuestGiver
і призначте назву квесту для виконання.
Висновок
Ми розглянули основи створення системи квестів у Unity. Ми навчилися створювати квести, керувати ними, відображати їх в інтерфейсі користувача та взаємодіяти з ними. Ці концепції можна розширити для створення складніших систем квестів у ваших проектах Unity.