Créer un système de quête dans Unity
Les quêtes sont un élément fondamental de nombreux jeux, offrant aux joueurs des objectifs et des récompenses. Dans ce tutoriel, vous apprendrez à créer un système de quête simple dans Unity. Nous aborderons la création, le suivi et l'achèvement des quêtes.
Mise en place du projet
Avant de commencer à coder, configurons un projet Unity simple:
- Créez un nouveau projet Unity.
- Créez un nouveau dossier nommé
Scripts
pour organiser nos scripts. - Créez un autre dossier nommé
Resources
pour stocker nos données de quête.
Création de la classe Quête
La première étape consiste à définir une classe Quest
pour contenir les informations de quête telles que le titre, la description et l’état d’achèvement.
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);
}
}
Création du gestionnaire de quêtes
Ensuite, nous avons besoin d'un gestionnaire pour gérer nos quêtes. La classe QuestManager
stockera et gérera les quêtes actives.
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);
}
}
Affichage des quêtes dans l'interface utilisateur
Pour afficher les quêtes au joueur, nous avons besoin d'une interface utilisateur simple. Créez un élément Canvas et un élément Text dans votre scène pour afficher la liste des quêtes.
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";
}
}
}
Interagir avec les quêtes
Ajoutons quelques fonctionnalités pour interagir avec nos quêtes. Par exemple, nous pouvons ajouter un bouton pour terminer une quête.
using UnityEngine;
public class QuestGiver : MonoBehaviour
{
public string questTitle;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
QuestManager questManager = FindObjectOfType<QuestManager>();
questManager.CompleteQuest(questTitle);
}
}
}
Tester le système de quête
Pour tester le système de quête, ajoutez un QuestManager
et un QuestUI
à votre scène. Créez une zone de déclenchement simple avec un script QuestGiver
attaché et attribuez un titre de quête à terminer.
Conclusion
Nous avons abordé les bases de la création d'un système de quête dans Unity. Nous avons appris à créer des quêtes, à les gérer, à les afficher dans l'interface utilisateur et à interagir avec elles. Ces concepts peuvent être étendus pour créer des systèmes de quête plus complexes dans vos projets Unity.