Unity Çalışma Zamanında Nesne Oluşturma ve Yok Etme

ücretsiz unity eğitim serisi

Çalışma Zamanında Bir Nesne Oluşturma

Unity’de bir nesneyi çalışma zamanında oluşturmak için genelde objenin prefab haline dönüştürülmesini tercih ederiz. Instantiate fonksiyonunu kullanarak referansını aldığımız oyun objesini istediğimiz konumda sahnede oluşturabiliriz. En basit şekliyle çalışma zamanında bir objeyi aşağıdaki şekilde oluştururuz.

using UnityEngine;

public class CreateObject : MonoBehaviour
{
    // Kübün referansını alıyoruz.
    public GameObject cube;
    void Start()
    {
        // Pozisyonu (0, 0, 0) ve rotasyonu değişmemiş bir obje oluştur.
        Instantiate(cube, new Vector3(0, 0, 0), Quaternion.identity);
    }
}

Yukarıdaki kodu yazdıktan sonra bir oyun objesine yazdığımız scripti sürükleyip bırakalım. Bir küp objesi oluşturup prefab haline getirelim. Prefablar hakkında detaylı bilgi için Prefab Sistemi adlı yazımızı okuyabilirsiniz. Daha sonra prefab nesnesini aşağıdaki şekilde scriptimize sürükleyip bırakarak cube değişkenine kübümüzün referansını yani oluşturulacak objenin referansını vermiş oluyoruz.

unity prefab'ı scripte sürüklemek

Çalışma Zamanında Oluşturulan Nesneleri Yok Etmek

Unity’de bir objeyi çalışma zamanında yok etmek için Destroy metodu kullanılır. Destroy metodu parametre olarak bir GameObject alır. İstenilirse ikinci parametre olarak yok etme bekleme süresi eklenebilir.

using UnityEngine;

public class CreateObject : MonoBehaviour
{
    // Kübün referansını alıyoruz.
    public GameObject cube;

    void Start()
    {
        // Pozisyonu (0, 0, 0) ve rotasyonu değişmemiş bir obje oluştur.
        GameObject yeniKup = Instantiate(cube, new Vector3(0, 0, 0), Quaternion.identity);
        Destroy(yeniKup, 3);
    }
}

 

Önemli Bir Not: Çok fazla obje oluşturup yok etme performans açısından kritik bir durumu ifade eder. Sahnemizde çalışma zamanında çok fazla nesne oluşturmamaya ve yok etmemeye özen göstermeliyiz. Daha sonra anlatacağımız konulardan Object Pooling metodunu uygulamak çok faydalı olacaktır.

Nesne Oluşturma ve Yok Etme Örnek Uygulama

Şimdi genel bir örnek yapalım. Aşağıdaki örnekte K tuşuna basıldığında sahnede 3 adet obje oluşturuluyor ve M tuşuna basıldığında oluşturulan objeler yok ediliyor.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CreateObject : MonoBehaviour
{
    // Kübün referansını alıyoruz.
    public GameObject cube;

    private GameObject[] cubes = new GameObject[3];

    void Start()
    {
        // Pozisyonu (0, 0, 0) ve rotasyonu değişmemiş bir obje oluştur.
        GameObject yeniKup = Instantiate(cube, new Vector3(0, 0, 0), Quaternion.identity);
        Destroy(yeniKup, 3);
    }

    void BesAdetKupOlustur()
    {
        for (int i = 0; i < 3; i++)
        {
            GameObject yeniKup = Instantiate(cube, new Vector3(i * 2, 0, 0), Quaternion.identity);
            cubes[i] = yeniKup;
        }
    }

    void KupleriYokEt()
    {
        for (int i = 0; i < 3; i++)
        {
            Destroy(cubes[i]);
        }
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.K))
        {
            BesAdetKupOlustur();
        }

        if (Input.GetKeyDown(KeyCode.M))
        {
            KupleriYokEt();
        }
    }
}

unity çalışma zamanında nesne oluşturma örneği

Projeyi aşağıdaki linkten indirebilirsiniz.

Google Drive

Unity Ders Listesini görüntüleyin.