Unity UI 4.6 Üzerine

Unity’de oyun geliştirirken, Unity’nin bize performans konusunda en çok sorun çıkarabilecek yanı, arayüzü. Yani UI’ı… Çok fazla söz ebeliği yapmadan, Unity UI 4.6 kodlarken edindiğim deneyimi sizinle paylaşmak isterim.

Unity UI 4.6’nın en küçük birimi Canvas’tır. Unity, Canvas içindeki UI nesnelerini bir mesh haline getirir ve çizer. Unity UI 4.6’nın çalışma prensibini en basit şekliyle böyle tanımlayabiliriz.

Unity UI ile çalışırken dikkat edilmesi gereken bir kaç altın kural var. Yazımın geri kalanında bu kurallardan bahsedeceğim.

Canvasları Bölün!
Bazı geliştiriciler tek bir Canvas içine bir dünya UI nesnesini yerleştirir ve projelerinde performans sorunlarına sebep olabilirler. Tek bir Canvas yerine, statik ve dinamik UI nesnelerinin ayrı gruplandığı Canvaslar kullanmak performans penceresinden bakıldığında daha doğru olacaktır.

Canvaslar içindeki UI nesnelerini bir mesh haline getirerek çizerler. En küçük bir text nesnesinde dahi değişiklik yapılsa o text nesnesinin parent Canvasındaki bütün UI nesneleri tekrar çizilir. Bu da Canvas’ın içindeki nesne sayısı arttıkça, performans sorunlarına sebep olur.

Layout Group Element Kullanmaktan Kaçının!
Grid Layout gibi componentlerin yerine getirdiği işleri, kendiniz kodlayın. UI sizin, oyun sizin ve bütün kuralları siz belirliyorsunuz. Bu yüzden Layout Group Element kullanmak yerine, onun işlevini yerine getiren kodu yazabilirsiniz.
Peki neden Layout Group Element kullanmaktan kaçınmalıyız? Çünkü Layout Group Element’leri içinde barındırdıkları child(çocuk) nesnelere GetComponent metodu kullanarak ulaşırlar. GetComponent metodu işlem yükü açısından ağır bir metoddur.

TextMesh Pro Kullanın!
TextMesh Pro’nun performans gözüyle bakıldığında göze çarpan en güzel yanlarından biri şöyle… Unity UI 4.6 Text objesine kenarlık ya da gölge eklerseniz, bu nesnenin fazladan triangle ürettiğini yani performans kaybına sebep olduğunu görürsünüz. TextMesh Pro Text’te ise böyle bir durum söz konusu değildir. Eğer daha önce kullanmadıysanız, TextMeshPro’yu AssetStore’dan ücretsiz olarak indirip, projenize dahil ederek, bütün artılarını deneyimlemelisiniz.

Bir kaç ek tavsiye :

– UI Elementlerinize Animasyon Component’i eklemeyin!
– Her Canvas’ın altındaki nesneler ayrı batchlenir. UI tasarımınızı yaparken buna dikkat ediniz.
– UI spritelarınızı sprite packer kullanarak bir sprite sheet haline getirmeniz, batch sayısını düşürecektir.
– Aynı material’i kullanan UI nesneleri birlikte batch edilir.

Son olarak, şurada güzel bir yazı var, okumadan geçmeyiniz.

Saygılar.

Leave a Reply

Your email address will not be published. Required fields are marked *