Unity'de Bir Görev Sistemi Oluşturun

Görevler birçok oyunun temel bir parçasıdır ve oyunculara hedefler ve ödüller sağlar. Bu eğitimde, Unity'de basit bir görev sisteminin nasıl oluşturulacağını öğreneceksiniz. Görev oluşturma, izleme ve tamamlamayı ele alacağız.

Projenin Kurulumu

Kodlamaya başlamadan önce basit bir Unity projesi kuralım:

  1. Yeni bir Unity projesi oluşturun.
  2. Scriptlerimizi organize etmek için Scripts adında yeni bir klasör oluşturalım.
  3. Görev verilerimizi saklamak için Resources adında başka bir klasör oluşturalım.

Quest Sınıfını Oluşturma

İlk adım, görev başlığı, açıklaması ve tamamlanma durumu gibi görev bilgilerini tutacak bir Quest sınıfı tanımlamaktır.

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

Görev Yöneticisini Oluşturma

Sonra, görevlerimizi idare edecek bir yöneticiye ihtiyacımız var. QuestManager sınıfı aktif görevleri depolayacak ve yönetecek.

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

Görevleri Kullanıcı Arayüzünde Görüntüleme

Oyuncuya görevleri göstermek için basit bir kullanıcı arayüzüne ihtiyacımız var. Görev listesini göstermek için sahnenizde bir Canvas ve bir Text öğesi oluşturun.

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

Görevlerle Etkileşim

Görevlerimizle etkileşime girmek için biraz işlevsellik ekleyelim. Örneğin, bir görevi tamamlamak için bir düğme ekleyebiliriz.

using UnityEngine;

public class QuestGiver : MonoBehaviour
{
    public string questTitle;

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

Görev Sistemini Test Etmek

Görev sistemini test etmek için sahnenize QuestManager ve QuestUI ekleyin. Ekli QuestGiver betiğiyle basit bir tetikleyici bölge oluşturun ve tamamlanması gereken bir görev başlığı atayın.

Çözüm

Unity'de bir görev sistemi oluşturmanın temellerini ele aldık. Görevlerin nasıl oluşturulacağını, yönetileceğini, kullanıcı arayüzünde nasıl görüntüleneceğini ve onlarla nasıl etkileşim kurulacağını öğrendik. Bu kavramlar, Unity projelerinizde daha karmaşık görev sistemleri oluşturmak için genişletilebilir.