Utwórz system zadań w Unity
Zadania są podstawową częścią wielu gier, zapewniając graczom cele i nagrody. W tym samouczku dowiesz się, jak utworzyć prosty system zadań w Unity. Omówimy tworzenie zadań, śledzenie i ukończenie.
Konfigurowanie projektu
Zanim zaczniemy kodować, utwórzmy prosty projekt Unity:
- Utwórz nowy projekt Unity.
- Utwórz nowy folder o nazwie
Scripts
, aby uporządkować nasze skrypty. - Utwórz kolejny folder o nazwie
Resources
, w którym będziemy przechowywać dane dotyczące naszych zadań.
Tworzenie klasy Quest
Pierwszym krokiem jest zdefiniowanie klasy Quest
, która będzie zawierać informacje o zadaniu, takie jak tytuł, opis i status ukończenia.
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);
}
}
Tworzenie Menedżera Zadań
Następnie potrzebujemy menedżera do obsługi naszych zadań. Klasa QuestManager
będzie przechowywać i zarządzać aktywnymi zadaniami.
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);
}
}
Wyświetlanie zadań w interfejsie użytkownika
Aby wyświetlić zadania graczowi, potrzebujemy prostego interfejsu użytkownika. Utwórz element Canvas i Text w swojej scenie, aby wyświetlić listę zadań.
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";
}
}
}
Interakcja z zadaniami
Dodajmy trochę funkcjonalności, aby wchodzić w interakcje z naszymi zadaniami. Na przykład możemy dodać przycisk do ukończenia zadania.
using UnityEngine;
public class QuestGiver : MonoBehaviour
{
public string questTitle;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
QuestManager questManager = FindObjectOfType<QuestManager>();
questManager.CompleteQuest(questTitle);
}
}
}
Testowanie systemu zadań
Aby przetestować system zadań, dodaj QuestManager
i QuestUI
do swojej sceny. Utwórz prostą strefę wyzwalacza ze skryptem QuestGiver
dołączonym i przypisz tytuł zadania do ukończenia.
Wniosek
Omówiliśmy podstawy tworzenia systemu zadań w Unity. Dowiedzieliśmy się, jak tworzyć zadania, zarządzać nimi, wyświetlać je w interfejsie użytkownika i wchodzić z nimi w interakcje. Te koncepcje można rozszerzyć, aby tworzyć bardziej złożone systemy zadań w projektach Unity.