GÜNCELLEME (22.06.2016): Recycled list view kullanılarak konsolun performansı arttırıldı.

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).

Link: https://github.com/yasirkula/UnityIngameDebugConsole/raw/master/IngameDebugConsole.unitypackage

NOT: Bu eklenti yalnızca Unity 5.2 veya üzerinde çalışır.

IngameDebugConsolePNG

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 hareket ettirmek ve boyutlandırmak için basit UI elemanları ekledim (sırasıyla tepedeki ve sağ alttaki ikonlar). Bir de konsolu oyun sırasında gizlemek isterseniz diye ufak bir popup hazırladım. Konsolu bu popup’a sürükleyince konsol gizlenir ve artık yeni gelen log’ların sayısı bu popup’ta gösterilir (konsolu tekrar açmak için popup’a tıklamanız yeterli):

IngameDebugConsolePopupPNG

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 DebugLog klasöründeki DebugLogCanvas 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.

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!

Yorumlar
  1. cenker07 diyor ki:

    birde oyun içi filebrowser yapar mısın

    • yasirkula diyor ki:

      File browser’ın çok az kullanım alanı olacağı için onun yerine başka şeylerle uğraşmayı tercih ediyorum. Android için file browser istiyorsanız Asset Store’da bunu yapan bir plugin mutlaka vardır.

  2. Kimex diyor ki:

    1-2 Ay kadar önce bluestacks ve unity programında hiçbir sorun çıkarmadan çalışan uygulamam şimdi 3. sahneye geçişinde unity programında düzgün bir şekilde çalışmasına rağmen bluetsacksda kapanıyor.Bu sistemi kurdum ama kapanmadan dolayı bilgi alamıyorum.2. sahnedede herhangi bir uyarı veya hata vermiyor.Bu kapanmanın nedenini nasıl çözebilirim ?Teşekkürler

Bir 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. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s