Skapa ett Quest-system i Unity

Uppdrag är en grundläggande del av många spel och ger spelarna mål och belöningar. I den här handledningen kommer du att lära dig hur du skapar ett enkelt uppdragssystem i Unity. Vi kommer att täcka uppdragsskapande, spårning och slutförande.

Konfigurera projektet

Innan vi börjar koda, låt oss sätta upp ett enkelt Unity-projekt:

  1. Skapa ett nytt Unity-projekt.
  2. Skapa en ny mapp med namnet Scripts för att organisera våra skript.
  3. Skapa en annan mapp som heter Resources för att lagra vår uppdragsdata.

Skapa Quest-klassen

Det första steget är att definiera en Quest-klass för att innehålla uppdragsinformation såsom titel, beskrivning och slutförandestatus.

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);
    }
}

Skapar Quest Manager

Därefter behöver vi en chef för att hantera våra uppdrag. Klassen QuestManager lagrar och hanterar de aktiva uppdragen.

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);
    }
}

Visar uppdrag i användargränssnittet

För att visa uppdrag för spelaren behöver vi ett enkelt användargränssnitt. Skapa en Canvas och ett textelement i din scen för att visa uppdragslistan.

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";
        }
    }
}

Interagera med uppdrag

Låt oss lägga till lite funktionalitet för att interagera med våra uppdrag. Till exempel kan vi lägga till en knapp för att slutföra ett uppdrag.

using UnityEngine;

public class QuestGiver : MonoBehaviour
{
    public string questTitle;

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            QuestManager questManager = FindObjectOfType<QuestManager>();
            questManager.CompleteQuest(questTitle);
        }
    }
}

Testa Quest-systemet

För att testa uppdragssystemet, lägg till en QuestManager och QuestUI till din scen. Skapa en enkel triggerzon med ett QuestGiver-skript bifogat och tilldela en uppdragstitel att slutföra.

Slutsats

Vi har täckt grunderna för att skapa ett uppdragssystem i Unity. Vi lärde oss hur man skapar uppdrag, hanterar dem, visar dem i användargränssnittet och interagerar med dem. Dessa koncept kan utökas för att skapa mer komplexa uppdragssystem i dina Unity-projekt.