CodeBlanks Logo Icon CodeBlanks

Object pooling tekrar

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 kullan

Havuz, 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

Player.cs
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

Player.cs
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

Soru
    gameObject.SetActive(____); // nesne yok edilmez, pasif yapilir
Cevap
    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ı

Uzman bölümündeki tüm dersler