Özet - Memory
- Oyun Geliştirme kursu
- Uzman
- Ders 12/47
- 4 dk
Memory yönetimini bir özet görevle pekiştirirsin.
Bellek yönetimi özeti
Bellek yönetimi üç temel alışkanlık üzerine kurulur: gereksiz tahsisten kaçınmak, nesneleri yeniden kullanmak ve doğru tipi seçmek. GC temizliği otomatik yapar ama her tahsis onun işini artırır. Havuzlar, struct kullanımı ve parça parça yükleme belleği rahatlatır.
int yeniNesne = 2;
int yenidenKullanilan = 5;Bu alışkanlıklar birlikte uygulandığında bellek sorunları azalır.
Uygulama Bellek özeti
BellekOzet sınıfında yontem adında bir metin alanını "Pooling", kazanc adında bir tam sayı alanını 5 ve kare adında bir tam sayı alanını tanımla. Awake metodu içinde yontem değerini "Struct" yap. Start metodu içinde Debug.Log ile "Yontem: ", yontem, " Kazanc: " ve kazanc parçalarını birleştirerek yazdır. Update metodu içinde kare sayacını her karede bir artır.
Başlangıç kodu
using UnityEngine;
public class BellekOzet : MonoBehaviour
{
// yontem adli metin alanini "Pooling", kazanc adli tam sayi alanini 5 degeriyle tanimla
// kare adli tam sayi alanini tanimla
void Awake()
{
// yontem degerini "Struct" yap
}
void Start()
{
// "Yontem: " + yontem + " Kazanc: " + kazanc biciminde yazdir
}
void Update()
{
// kare sayacini her karede bir artir
}
}Örnek çözüm
using UnityEngine;
public class BellekOzet : MonoBehaviour
{
string yontem = "Pooling";
int kazanc = 5;
int kare;
void Awake()
{
yontem = "Struct";
}
void Start()
{
Debug.Log("Yontem: " + yontem + " Kazanc: " + kazanc);
}
void Update()
{
kare++;
}
}Beklenen çıktı
Yontem: Struct Kazanc: 5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdakilerden hangisi bellek tahsisini artırır?
void Update()
{
Nesne gecici = new Nesne();
}- Kullanılmayan nesnelerin referanslarını bırakmak
- Update içinde her karede new ile nesne oluşturmak Doğru cevap
- Nesneleri havuzdan almak
- Küçük veriler için struct kullanmak
Açıklama: Her karede new ile nesne üretmek sürekli tahsis yapar; havuz, struct ve referans bırakma ise tahsisi azaltır.
2 Dizi tahsisini yaz
GameObject[] kasaDizisi = new ____[5];
GameObject[] kasaDizisi = new GameObject[5];
Açıklama: Dizi tahsisinde tür adı tekrar yazılır; GameObject dizisi için new GameObject[5] kullanılır.
3 Bellek özeti tablosu
| Kavram | Anlamı |
|---|---|
GC |
Kullanılmayan nesneleri temizler |
Heap tahsisi |
new ile bellek ayırma |
struct |
Değer tipi olarak saklanır |
Object pooling |
Nesneleri yeniden kullanma yöntemi |