Unity'de Bir Oyun Nasıl Yeniden Başlatılır

Bir oyunu yeniden başlatmak, Unity oyunlarında yaygın bir özelliktir ve oyuncuların oyun durumunu sıfırlamasına ve baştan başlamasına olanak tanır. Bu, oyun bitti ekranları, seviye tekrarları veya pratik çalışmaları gibi senaryolarda faydalıdır. Unity'de, bir oyunu yeniden başlatmak genellikle geçerli sahneyi yeniden yükleyerek yapılır ve bu da tüm nesneleri ve değişkenleri varsayılan durumlarına sıfırlar. Bu eğitimde, Unity'nin sahne yönetim sistemini kullanarak bir oyun yeniden başlatma özelliğinin nasıl uygulanacağını öğreneceğiz.

Adım 1: Sahneyi Kurma

Basit bir Unity sahnesi oluşturarak başlayalım:

  1. Yeni bir Unity projesi oluşturun.
  2. Bir oyuncuyu veya oyun öğesini temsil etmek için 3 boyutlu bir nesne ekleyin (örneğin, Küp).
  3. Engeller veya koleksiyon öğeleri gibi bazı oyun öğeleri ayarlayın.
  4. Sahneyi kaydetmek için Dosya > Farklı Kaydet yolunu izleyin ve ona AnaSahne gibi bir isim verin.

Adım 2: Sahne Yönetimini İçe Aktarma

Unity'nin SceneManager sahne yükleme ve yeniden yüklemeyi yönetmek için kullanılır. Bunu kullanmak için, betiklerimize UnityEngine.SceneManagement ad alanını eklememiz gerekir.

Adım 3: Yeniden Başlatma Komut Dosyasını Yazma

Daha sonra, geçerli sahneyi yeniden yükleyen bir betik oluşturun:

  1. Assets klasöründe sağ tıklayın ve Create > C# Script seçeneğini seçin. Adını RestartGame olarak belirleyin.
  2. Komut dosyasını kod düzenleyicinizde açın ve aşağıdaki kodu ekleyin:
using UnityEngine;
using UnityEngine.SceneManagement;

public class RestartGame : MonoBehaviour
{
    void Update()
    {
        // Check if the player presses the R key to restart the game
        if (Input.GetKeyDown(KeyCode.R))
        {
            RestartCurrentScene();
        }
    }

    // Method to restart the current scene
    public void RestartCurrentScene()
    {
        Scene currentScene = SceneManager.GetActiveScene(); // Get the current scene
        SceneManager.LoadScene(currentScene.name); // Reload the scene by its name
    }
}

Adım 4: Yeniden Başlatma Komut Dosyasını Bir Nesneye Ekleme

Komut dosyasını işlevsel hale getirmek için:

  1. RestartGame betiğini sahnedeki bir GameObject'e (örneğin boş bir GameObject) ekleyin.
  2. Sahneyi kaydedin ve Oynat tuşuna basın. Oyun sırasında, sahneyi yeniden başlatmak için R tuşuna basın.

Adım 5: Yeniden Başlatma Düğmesi Ekleme

UI'lı oyunlarda oyunu yeniden başlatmak için bir düğme ekleyebilirsiniz:

  1. Hiyerarşide sağ tıklayın ve sahnenize bir düğme eklemek için UI > Button seçeneğini seçin.
  2. "Restart" şeklinde düzenlemek için, alt Text nesnesini seçip, Denetçi'deki içeriğini değiştirin.
  3. Eğer henüz yapmadıysanız, yeniden başlatma betiğini sahnedeki bir GameObject'e ekleyin.
  4. Hiyerarşi'deki düğmeyi seçin, Düğme bileşenindeki OnClick bölümüne gidin ve + simgesine tıklayın.
  5. RestartGame betiğini içeren GameObject'i boş alana sürükleyin.
  6. Açılır menüden Oyunu Yeniden Başlat > Mevcut Sahneyi Yeniden Başlat seçeneğini seçin.

Artık oyun esnasında butona tıklandığında oyun yeniden başlayacaktır.

İsteğe bağlı: Oyuncu İlerlemesinin Sıfırlanması

Oyununuz oyuncu ilerlemesini izliyorsa (örneğin, skor veya sağlık), oyun yeniden başlatıldığında bu değerlerin sıfırlandığından emin olun. Örneğin:

using UnityEngine;

public class Player : MonoBehaviour
{
    public int score = 0;
    public int health = 100;

    void Start()
    {
        // Reset score and health on game start
        score = 0;
        health = 100;
    }
}

Sıfırlanması gereken değişkenlerin Start metodunda veya betiğinizdeki uygun yerde başlatıldığından emin olun.

Yeniden Başlatma Özelliğini Test Etme

Yeniden başlatma özelliğinizi test etmek için:

  1. Sahneyi oynayın ve oyun öğeleriyle etkileşime geçin (örneğin, oyuncuyu hareket ettirin, öğeleri toplayın veya sağlık kaybedin).
  2. Sahneyi sıfırlamak için R tuşuna basın veya yeniden başlat düğmesine tıklayın.
  3. Sahnenin, tüm değişkenler ve nesneler dahil olmak üzere başlangıç ​​durumuna sıfırlandığını doğrulayın.

İsteğe bağlı geliştirmeler

Yeniden başlatma özelliğinizi geliştirmek için bazı ek fikirler şunlardır:

  • Oyun Bitti Ekranı: Oyuncu kaybettiğinde yeniden başlatma seçeneğiyle birlikte oyun bitti ekranını görüntüler.
  • Seviye Seçimi: Mevcut seviyeyi yeniden başlatma veya ana menüye dönme seçenekleri sağlar.
  • Kaydet ve Yükle: Oyuncunun yeniden başlatmalarda ilerlemesini korumak için kaydetme ve yükleme işlevini entegre edin.
  • Onaylama İletişim Kutusu: Kazara yeniden başlatmaları önlemek için yeniden başlatmadan önce bir onay iletişim kutusu ekleyin.

Çözüm

Unity'de SceneManager'ı kullanarak bir yeniden başlatma özelliği uyguladık. Bu işlevsellik, oyuncuların oyunu kolayca sıfırlamasına olanak tanır ve bu da onu her oyun için temel bir özellik haline getirir. Oyun yeniden başlatma sisteminizi daha da iyileştirmek için kullanıcı arayüzü düğmeleri, özel betikler ve oyuncu ilerleme sıfırlamalarıyla deneyler yapın.