Unity'de Basit Bir Oyun Yöneticisi Oluşturma
Unity içindeki Oyun Yöneticisi, bir oyunun temel mekaniklerini ve mantığını denetleyen ve kontrol eden merkezi bir betik veya sistemdir. Genellikle oyun durumlarını (örneğin, başlat, duraklat, bitir), oyuncu ilerlemesini, puanları, seviyeleri ve genel ayarları yönetir. Oyun Yöneticisi, projenizde temiz bir yapı sağlamak ve gereksiz kodlardan kaçınmak için çok önemlidir. Bu eğitimde, oyun durumunu ve puan takibini yönetmek için temel bir Oyun Yöneticisi oluşturacağız.
Adım 1: Sahneyi Kurma
Başlamak için basit bir Unity sahnesi hazırlayın:
- Yeni bir Unity 3D projesi oluşturun.
- Zemin için Uçak gibi temel bir seviye düzeni ve oyun öğeleri için birkaç nesne ekleyin.
- Puan gibi bilgileri görüntülemek için bir UI Tuvali oluşturun.
Adım 2: Oyun Yöneticisi Komut Dosyasını Oluşturma
Oyun Yöneticisi, kolay erişilebilir olmasını sağlamak için tekil olacak ve oyun boyunca yalnızca bir örnek bulunacak. Komut dosyasını yazalım:
- Proje panelinde sağ tıklayın ve Oluştur > C# Script seçeneğini seçin. Adını OyunYöneticisi olarak belirleyin.
- Komut dosyasını kod düzenleyicinizde açın ve içeriğini aşağıdakilerle değiştirin:
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance; // Singleton instance
public int score = 0; // Player's score
public bool isGameActive = true; // Is the game running?
void Awake()
{
// Ensure there is only one instance of GameManager
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject); // Persist across scenes
}
else
{
Destroy(gameObject); // Destroy duplicate instances
}
}
// Method to increase the score
public void AddScore(int points)
{
if (isGameActive)
{
score += points;
Debug.Log("Score: " + score);
}
}
// Method to end the game
public void EndGame()
{
isGameActive = false;
Debug.Log("Game Over!");
// Additional logic to handle game over, like displaying UI
}
}
Adım 3: Oyun Yöneticisini Sahneye Ekleme
Şimdi sahneye Oyun Yöneticisini ekleyelim:
- Hiyerarşide boş bir GameObject oluşturun ve adını GameManager koyun.
- GameManager betiğini GameObject'in üzerine sürükleyip bırakın.
- Sahnede yinelenen GameManager GameObjects olmadığından emin olun.
Adım 4: Oyun Mantığını Güncelleme
Oyuncu etkileşimlerini yönetmek için Oyun Yöneticisi'nden faydalanalım. Örneğin, oyun nesnelerini Oyun Yöneticisi ile etkileşime girecek şekilde değiştireceğiz:
- Oyuncunun etkileşime girebileceği nesneler için Hedef adında yeni bir betik oluşturun.
- Hedef betiği için aşağıdaki kodu kullanın:
using UnityEngine;
public class Target : MonoBehaviour
{
public int pointValue = 10; // Points awarded for interacting with this target
void OnMouseDown()
{
if (GameManager.Instance.isGameActive)
{
// Add points to the score
GameManager.Instance.AddScore(pointValue);
// Destroy the target
Destroy(gameObject);
}
}
}
Bu betik, oyuncunun nesnelerle üzerlerine tıklayarak etkileşime girdiğini varsayar. Bunu çarpışmalar veya tetikleyiciler gibi oyununuzun mekaniğine uyarlayabilirsiniz.
Adım 5: Puanın Görüntülenmesi
Skoru oyuncuya göstermek için:
- Canvas'ta Text UI öğesini oluşturun ve adını ScoreText koyun.
- ScoreUI adında yeni bir script oluşturun ve Canvas'a ekleyin.
- Puan görüntüsünü güncellemek için aşağıdaki kodu kullanın:
using UnityEngine;
using UnityEngine.UI;
public class ScoreUI : MonoBehaviour
{
public Text scoreText;
void Update()
{
if (GameManager.Instance != null)
{
scoreText.text = "Score: " + GameManager.Instance.score;
}
}
}
ScoreText UI öğesini Denetçi'deki ScoreText alanına sürükleyin.
Adım 6: Oyun Yöneticisini Test Etme
Oyun Yöneticinizi test etmek için:
- Sahneyi çalıştırın ve Hedef betiğini kullanan nesnelerle etkileşime geçin.
- Hedeflerle etkileşime girdikçe kullanıcı arayüzünde puanların güncellendiğini gözlemleyin.
- Oyunu sonlandırmayı test etmek için EndGame metodunu çağırın (örneğin, bir tetikleyici veya düğme kullanarak).
İsteğe bağlı geliştirmeler
Oyun Yöneticisinin işlevselliğini şu özelliklerle genişletebilirsiniz:
- Seviye Yönetimi: Oyun bittiğinde yeni seviyeler yükleyin veya sahneyi sıfırlayın.
- Oyun Zamanlayıcısı: Oyunculara meydan okumak için geri sayım sayacı ekleyin.
- İlerlemeyi Kaydetme: PlayerPrefs veya bir kayıt sistemi kullanarak oyuncunun ilerlemesini depolayın ve alın.
- Duraklatma Menüsü: Oyunu durdurmak ve seçenekleri göstermek için bir duraklatma menüsü uygulayın.
Çözüm
Unity'de oyun durumunu ve puan takibini yönetmek için basit bir Oyun Yöneticisi oluşturduk. Oyun Yöneticisi, temel mantığı merkezileştirerek projenizi daha düzenli ve ölçeklenebilir hale getirir. Oyun Yöneticisini oyununuzun ihtiyaçlarına göre uyarlamak için ek özellikler deneyin.