Unity Çerez Ders: TextMesh Pro Yazılarında Sayı Göstermenin Efektif Yolu

Yayınlandı: 13 Eylül 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Yeniden merhabalar,

Unity‘de TextMesh Pro kullanırken her tmpYazisi.text = intDegisken.ToString(); veya tmpYazisi.text = "Skor: " + intDegisken; yaptığınızda yeni bir string için bellek ayrılır (allocation). Bu da RAM’in daha sık dolmasına ve RAM’i boşaltmak için garbage collector‘un daha çok çalışmasına sebep olur (garbage collector’dan Optimizasyon dersimin başında bahsettim). Bu sıkıntıyı çözmek için basit bir script yazdım. Her ne kadar bu script’in performansı üstteki kodlara göre muhtemelen bir tık kötü olsa da, ben performansın olumsuz etkilendiğini henüz görmedim.

Yapmanız gereken, projenizde TMP_IntegerText adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/31704321d6eef8df19933fe502ae6219

Artık kodunuzu şu şekilde güncelleyebilirsiniz:

  • tmpYazisi.text = intDegisken.ToString(); yerine tmpYazisi.SetText(intDegisken);
  • tmpYazisi.text = "Skor: " + intDegisken; yerine tmpYazisi.SetText(intDegisken, "Skor: ", null);
  • tmpYazisi.text = "Para: " + intDegisken + "$"; yerine tmpYazisi.SetText(intDegisken, "Para: ", "$");

Bu script, varsayılan olarak maksimum 64 karakterli string’leri destekler. Daha uzun string’ler için, script’teki readonly char[] arr array’inin boyutunu artırabilirsiniz.

Oyunu editörde Profiler ile test ederken SetText fonksiyonu GC Alloc yapıyor gözükebilir ama oyunu build alınca bu değer 0’a inecektir.

Sonraki derslerde görüşmek üzere!

Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.