Hepinize merhabalar,
Bu yazıda sizlerle kendi yazdığım basit bir Unity eklentisini paylaşacağım. Bu eklentinin olayı, Unity’den aşina olduğumuz console‘un bir benzerini direkt oyun içerisinde göstermek.
Bir oyunu Unity editöründe test ederken aldığımız hataları, uyarıları veya Debug.Log mesajlarını console vasıtasıyla kolayca görebiliyoruz ancak oyunu herhangi bir platforma build aldıktan sonra bu mesajlara direkt oyun içerisinden erişemiyoruz; bunun için logcat gibi ekstra bir ekipman kullanmamız gerekiyor. Ya da en azından ben uzun zamandır öyle biliyordum. Bu debug mesajlarına bir event vasıtasıyla kendi scriptlerimizden erişebildiğimizi daha yeni öğrendim. Bunu öğrenmemin hemen ardından da, alınan log’ları görsel olarak kullanıcıya sunan basit bir arayüz geliştirdim (UI sistemi ile).
Asset Store: https://assetstore.unity.com/packages/tools/gui/in-game-debug-console-68068
Alternatif Link: https://github.com/yasirkula/UnityIngameDebugConsole/releases
NOT: Bu eklenti yalnızca Unity 5.2 veya üzerinde çalışır.

Kullanım detayları için yazının devamını okuyabilirsiniz…
Konsolun görünümünü ve işleyişini aslına olabildiğince benzetmeye çalıştım. İlaveten, konsol penceresini oyun sırasında boyutlandırmak için sağ alta bir ikon ekledim. Konsolu, sağ üstteki çarpıya tıklayarak oyun sırasında gizlerseniz, ufak bir popup ortaya çıkmakta. Bu popup’ı dilerseniz etrafta hareket ettirebilir ve yeni bir log gelip gelmediğini direkt popup üzerinden görebilirsiniz. Popup’a tıklarsanız da konsol yeniden açılır:

Kodları İngilizce yazdım ancak eklentiyi kullanmak için kodları değiştirmenize gerek yok. Tek yapmanız gereken, linkte paylaştığım unitypackage‘ı projenize Assets-Import Package-Custom Package… yolunu izleyerek import edip IngameDebugConsole klasöründeki IngameDebugConsole prefab’ını sahnenize sürüklemek.
Eğer konsolun oyundaki her sahnede gözükmesini istiyorsanız, bu prefab’ı sadece oyunun ilk sahnesine koymanız yeterli çünkü konsolda yer alan “Debug Log Manager” component’indeki Singleton değişkeni, konsolun sahneler arası geçişlerde yok olmasını önlüyor. Ancak konsolu sadece bazı sahnelerde istiyorsanız o zaman o sahnelere koyduğunuz konsollardaki Singleton‘un başındaki tiki kaldırın.
Konsolu Android uygulamalarınızda kullanırken, dilerseniz Android’in logcat log’larına direkt konsoldan erişebilirsiniz. Bunun için DebugLogCanvas objesindeki Receive Logcat Logs In Android seçeneğini açmanız yeterli. Ancak bazen logcat log’ları çok fazla olabildiği için, Logcat Arguments vasıtasıyla bu log’ları filtreleyebilirsiniz. Mesela sadece Admob ile alakalı log’ları görmek için Logcat Arguments’i -s Ads yapabilirsiniz.
Son olarak da, eğer ki log mesajlarını scriptlerimizde yakalamamızı sağlayan ve bu eklentinin yazılmasına olanak sağlayan Unity event’ini merak ediyorsanız: Application.logMessageReceived
Başka derslerde görüşmek dileğiyle!