Lag et Quest-system i Unity

Oppdrag er en grunnleggende del av mange spill, og gir spillerne mål og belønninger. I denne opplæringen lærer du hvordan du lager et enkelt oppdragssystem i Unity. Vi vil dekke oppretting, sporing og fullføring av oppdrag.

Sette opp prosjektet

Før vi begynner å kode, la oss sette opp et enkelt Unity-prosjekt:

  1. Opprett et nytt Unity-prosjekt.
  2. Opprett en ny mappe kalt Scripts for å organisere skriptene våre.
  3. Opprett en annen mappe kalt Resources for å lagre oppdragsdataene våre.

Opprette Quest-klassen

Det første trinnet er å definere en Quest-klasse for å inneholde oppdragsinformasjon som tittel, beskrivelse og fullføringsstatus.

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

Opprette Quest Manager

Deretter trenger vi en manager til å håndtere våre oppdrag. Klassen QuestManager vil lagre og administrere de aktive oppdragene.

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

Viser oppdrag i brukergrensesnittet

For å vise oppdrag til spilleren trenger vi et enkelt brukergrensesnitt. Lag et lerret og et tekstelement i scenen din for å vise oppdragslisten.

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

Interaksjon med oppdrag

La oss legge til litt funksjonalitet for å samhandle med oppdragene våre. For eksempel kan vi legge til en knapp for å fullføre et oppdrag.

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 Quest-systemet

For å teste oppdragssystemet, legg til en QuestManager og QuestUI til scenen din. Lag en enkel triggersone med et QuestGiver-skript vedlagt, og tilordne en oppdragstittel som skal fullføres.

Konklusjon

Vi har dekket det grunnleggende om å lage et oppdragssystem i Unity. Vi lærte å lage oppdrag, administrere dem, vise dem i brukergrensesnittet og samhandle med dem. Disse konseptene kan utvides for å lage mer komplekse oppdragssystemer i Unity-prosjektene dine.