Hepinize merhabalar,
Unity‘de oyun tasarlarken bol bol Debug.Log kullanır, nerede ne olduğunu veya bir hatanın neyden kaynaklandığını bu şekilde anlamaya çalışırım. Oyunu Android cihazda test ederken de bu log’lara erişebilmek ve(ya) Unity’nin verdiği exception’ları görebilmek oldukça büyük önem arz edebiliyor. Bunun için kullanabileceğimiz birden çok yöntem bulunmakta. Bu derste bu yöntemleri göreceğiz.
Başlamadan önce tamamlamanız gereken birkaç adım var:
- cihazınızın Geliştirici Seçenekleri menüsünden USB hata ayıklama‘yı aktifleştirin (eğer geliştirici seçenekleri sizde yoksa internette “Android geliştirici seçeneklerini aktif etme” diye arama yapabilirsiniz)
- cihazı USB kablo ile bilgisayarınıza bağlayın.
- Android SDK Manager‘da Google USB Driver‘ın kurulu olduğundan emin olun:

- eğer hata almadan Build&Run yapabiliyorsanız her şey tamamdır. Aksi taktirde cihazınızın güncel USB sürücüsünü indirip kurmanız gerekebilir
Artık log’larımızı görmeye hazırız! Log’ları görmek için birden çok alternatif yol bulunmakta:
1) Unity 2019 ve Sonrasında Android Logcat Package’ını Kullanmak
Unity’nin geliştirdiği Android Logcat package’ını edinmek için öncelikle Window-Package Manager yolunu izleyin ve gelen listeden “Android Logcat“i seçip sağ alttaki Install butonuna tıklayın. Kurulum tamamlandıktan sonra, Window-Analysis-Android Logcat yolunu izleyerek logcat penceresini açabilirsiniz (oyunu Android’e Build&Run yaptığınızda bu pencere otomatik olarak açılır):

Eğer cihazınız USB ile bilgisayara bağlı olduğu halde log’larını göremiyorsanız, yukarıdaki Auto Run‘ın seçili olduğundan emin olup onun sağındaki yerden cihazınızı seçebilirsiniz (bir cihaz seçili değilken No device yazar). Sadece açık olan bir uygulamanın log’larını görmek için, No Filter‘a tıklayıp uygulamanızı listeden seçebilirsiniz; ancak sonunda [Exited] yazanlar, uygulamanızın kapatılmış eski oturumlarının log’larıdır, yanlışlıkla onları seçmeyin.
Sadece belli tag’e sahip log’ları görmek için (örneğin AdMob’un log’ları Ads tag’ine sahiptir), Tag sütununa sağ tıklayıp Tag Control… seçeneğini seçin:

Gelen penceredeki boş kısma istediğiniz tag’i (mesela Ads) girip ADD butonuna tıklayın. Ardından Tag sütununa tekrar sağ tıklayıp, yeni oluşturduğunuz tag’i seçin. Böylece artık sadece o tag’e sahip log’lar gözükecek. Yine tüm log’ları görmek için No Filter seçeneğini seçebilirsiniz.
2) adb logcat
Yapmanız gereken şey, Android SDK’yı kurduğunuz yerdeki platform-tools klasörüne gitmek (C:\Program Files (x86)\Android\android-sdk\platform-tools). Bu klasörde normal şartlarda adb.exe dosyası olması lazım, yoksa sebebini ben de bilmiyorum. Şimdi klavyeden Shift tuşuna basılı tutarken ve hiçbir dosya seçili değilken klasörde boş bir yere sağ tıklayın ve “Komut penceresini burada aç” seçeneğini seçin (Windows 10’da PowerShell penceresini buradan açın):

Gelen komut penceresine “.\adb logcat -s Unity” (tırnaksız) yazın. Artık Unity oyununuzu cihazınızda çalıştırdığınızda oyuna dair tüm log’lar burada gözükecek:

Logcat’i durdurmak için CTRL+C yapabilirsiniz. Burada bilmeniz gereken bir nokta şu ki; adb logcat komutunu çalıştırdığınızda belki 10-20 dakika önce alınmış log’ları da görürsünüz çünkü bu log’lar hemen temizlenmez ve bir süre cihazda tutulurlar. Kafa karışıklığını önlemek amaçlı, cihazdaki log’ları tamamen temizlemek isterseniz konsola “.\adb logcat -c” yazabilirsiniz.
NOT: AdMob log’larını görmek için “.\adb logcat -s Ads” yazın. Cihaza gelen tüm log’ları (Unity ile alakalı veya değil) görmek için de sadece “.\adb logcat” yazın.
NOT2: Windows 10 ve üzerinde, logcat komutunun sonuna “-v color” eklerseniz, log’lar renkli bir şekilde görünürler (hatalar kırmızı, diğer log’lar mavi/yeşil/beyaz vb.). Örneğin: “.\adb logcat -s Unity -v color“
3) Android Studio
Android Studio’yu açın ve View-Tool Windows-Logcat yolunu izleyin. Şu anda cihaza gelen tüm log’ları Logcat penceresinde göreceksiniz. Sadece Unity ile alakalı log’ları görmek için Logcat penceresinin en sağ üstündeki butona tıklayın ve “Edit Filter Configuration” yolunu izleyin:

Artık sadece Unity’nin log’larını göreceksiniz. Ancak diyelim ki sadece AdMob’un log’larını görmek istiyorsanız o zaman “Log Tag” olarak Ads girin.
4) Oyun İçi Debug Konsolu
Bu plugin ile herhangi bir araç kullanmadan direkt oyun içerisinden log’ları görmeniz mümkün. Detaylar için sizi şuraya alayım: https://yasirkula.com/2016/06/18/unity-oyun-ici-debug-konsolu-ui-sistemi-ile/

Sonraki derste görüşmek üzere!