Unity'de Performans Optimizasyonu: Oyun Hızını Arttırmanın Pratik Yolları
Unity'de geliştirilen oyunlar, özellikle mobil cihazlarda ya da düşük sistem özelliklerine sahip bilgisayarlarda yavaş çalışabilir. Performans sorunu yaşayan bir oyunu hızlandırmanın birkaç temel yöntemi var.
Draw Call Sayısını Azaltmak
Draw call, GPU'ya gönderilen çizim komutlarıdır. Çok fazla draw call oyunun hızını düşürür. Bunu azaltmanın en etkili yolu texture atlasing ve batching kullanmaktır. Unity'nin yerleşik Static Batching özelliği, hareket etmeyen nesneleri otomatik olarak birleştirir. Dynamic Batching ise hareketli nesneler için çalışır ancak daha az etkilidir.
LOD (Level of Detail) Sistemi
Uzakta bulunan nesneleri daha düşük poligon sayısıyla göstermek, GPU yükünü önemli ölçüde azaltır. Unity'de LOD Group bileşeni kullanarak bunu kolayca yapabilirsiniz.
Garbage Collection Sorunu
Unity'nin garbage collector sık çalışırsa oyunda duraklamalar oluşur. Bunu önlemek için object pooling yöntemi kullanılır:
1public class ObjectPool: MonoBehaviour {2public GameObject prefab;3private Queue<GameObject> pool = new Queue<GameObject>();45public GameObject GetObject() {6if (pool.Count > 0) {7return pool.Dequeue();8}9return Instantiate(prefab);10}1112public void ReturnObject(GameObject obj) {13obj.SetActive(false);14pool.Enqueue(obj);15}16}Physics Optimizasyonu
Fizik hesaplamaları pahalıdır. Gereksiz Rigidbody bileşenlerini kaldırın, collision layerlarını düzgün ayarlayın ve fixed timestep değerini optimize edin.
Shader ve Texture Optimizasyonu
Karmaşık shader'lar GPU'yu zorlayabilir. Mobile-optimized shader'lar tercih edin. Texture boyutlarını gerekli minimum seviyeye indirin ve compression kullanın.
Bu optimizasyonlar uygulandığında oyunun FPS'i belirgin şekilde artar ve oyuncu deneyimi iyileşir.
5 yorum
aynen işte o kadar bir de static batchingi kullanırsan hareket etmeyen şeyler zaten otomatik olarak birleştirilir ekstra uğraşman gerekmez
hmm tamam anladım yani bir seferde çok şey çizdirtince bilgisayar daha rahat oluyor işte
batching basit aslında oyunun ekranda çizdireceği şeyleri tek seferde çizdirtmek yerine gruplar halinde çizdirtiyorsun böylece bilgisayar daha az uğraşıyor draw call da işte o çizdirme emridir her obje için ayrı emir
ya draw call filan çok karışık geliyor batching ne demek ki ona da anlayan yok heralde
abi benim sorunu bu işte hareket etmeyen şeyler zaten az oluyor oyunumda hepsi hareket ediyor neredeyse o dynamic batching de pek işe yaramıyor