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:
- Yeni bir Unity projesi oluşturun.
- Scriptlerimizi organize etmek için
Scripts
adında yeni bir klasör oluşturalım. - 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.