Object pooling tekrar
- Oyun Geliştirme kursu
- Uzman
- Ders 10/47
- 4 dk
Bellek için object pooling kullanımını derinleştirirsin.
Object pooling nedir?
Object pooling, nesneleri yok etmek yerine bir havuzda tutup yeniden kullanma yöntemidir. Havuzdaki nesne işi bitince yok edilmez, pasife alınır ve sonra tekrar kullanılır. Böylece sürekli tahsis ve toplama maliyeti azalır.
gameObject.SetActive(false); // yok etmek yerine pasif yap
nesne = havuzdakiNesne; // yeniden kullanHavuz, sık oluşturulan nesneler için idealdir.
Havuz nasıl çalışır?
Havuz, önceden hazırlanmış nesneleri bir listede tutar. İhtiyaç olduğunda listeden bir nesne alınır, iş bitince geri bırakılır. Yeni nesne üretmek yerine eskisini kullanmak bellek açısından çok daha verimlidir.
int yeniNesne = 1;
int yenidenKullanilan = 4;Havuz sayesinde tahsis sayısı düşer ve oyun daha akıcı olur.
Uygulama Havuz tasarrufunu yaz
HavuzTakip sınıfında yeniNesne adında bir tam sayı alanını 1 ve yenidenKullanilan adında bir tam sayı alanını 4 değeriyle tanımla. Start metodu içinde bu iki değeri toplayıp toplam adında bir tam sayıya ata ve Debug.Log ile "Havuz tasarrufu: " metnini toplam ile birleştirerek yazdır.
Başlangıç kodu
using UnityEngine;
public class HavuzTakip : MonoBehaviour
{
// yeniNesne adli tam sayi alanini 1, yenidenKullanilan adli tam sayi alanini 4 degeriyle tanimla
void Start()
{
// bu iki degeri toplayip toplam adli tam sayiya ata
// "Havuz tasarrufu: " + toplam biciminde yazdir
}
}Örnek çözüm
using UnityEngine;
public class HavuzTakip : MonoBehaviour
{
int yeniNesne = 1;
int yenidenKullanilan = 4;
void Start()
{
int toplam = yeniNesne + yenidenKullanilan;
Debug.Log("Havuz tasarrufu: " + toplam);
}
}Beklenen çıktı
Havuz tasarrufu: 5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Object pooling neden kullanılır?
- Sahnedeki ışıkları yumuşatmak için
- Yeni tahsisleri azaltıp nesneleri yeniden kullanmak için Doğru cevap
- Kod satırı sayısını artırmak için
- Dosyaları daha hızlı derlemek için
Açıklama: Havuz, yeni nesne üretmek yerine eskisini kullanır; bu da tahsis sayısını düşürür.
2 Nesneyi pasife al
gameObject.SetActive(____); // nesne yok edilmez, pasif yapilir
gameObject.SetActive(false); // nesne yok edilmez, pasif yapilir
Açıklama: SetActive(false) nesneyi pasife alır; havuzdaki nesne yok edilmeden kenara alınır.
3 Havuz terimleri
| Kavram | Anlamı |
|---|---|
Havuz (pool) |
Nesnelerin yeniden kullanıldığı liste |
Yeniden kullanma |
Yeni tahsis yerine eski nesneyi alma |
SetActive(false) |
Nesneyi pasife alma |
Tahsis tasarrufu |
Azalan tahsis miktarı |