Basit Object Pooling

Basit Object Pooling

Her oyunun vazgeçilmezi olan, özellikle mobilde performans konusunda sıkıntı çıkmaması için kullanılan obje havuzları, sürekli bir obje oluşturup silmekten ziyade var olan objeleri değiştirerek kullanma mantığıyla çalışıyor. Bu sayede Unity’nin garbage collector’unu daha verimli kullanıp, cihazlardaki bellek kullanımını düşürebiliyoruz. Bunun içinm Unity Asset Store’da veya farklı yerlerde bir sürü örnek obje havuzu sistemleri var. Ben de kendim için bir tane yazmıştım zamanında. Sizin de işinize yarayacağını düşündüm.

ObjectPooler.cs – İndir

Object Pooler’ı kullanabilmeniz için ilk önce bu scripti sahnedeki bir objenin içine atın. Ardından bu scriptteki “Pools” arrayine havuzda barındıracağınız objenin prefab’ını, ismini ve maksimum kaç tane olacağını belirleyin. Maksimum sayı aşıldığında sahnede var olan objeyi tekrar kullanacaktır, o yüzden maksimum obje sayısını iyi belirlemekte fayda var.

Ardından tek yapmanız gereken “Instantiate” komutu yerine “ObjectPooler.Instance.SpawnFromPool()” fonksiyonunu gereken verilerle çağırmak. Zaten GameObject döndürdüğü için “Instantiate” ile yapabildiklerinizi bununla da rahatça yapabilirsiniz.

Objenizi spawnladıktan sonra objeyi sahneden kaldırmak ve tekrar havuza koymak için objeyi kapatmanız (gameObject.SetActive(false)) yeterli.

Objenin spawnlanmasında bir şeyler yapmasını istiyorsanız Unity’nin sağladığı “OnEnable()” ve “OnDisable()” callback’lerini kullanabilirsiniz.

Yorumlar
Abdullah Kırmızıyüz
Abdullah Kırmızıyüz
programcı 2d artist unity3D c# pixel