Misafir Sayfa Görüntülemeleri Bazı Kategoriler İçin Sınırlıdır.
  • Direk SANAL GERÇEKLİK GÖZLÜĞÜNÜZDEN, tarayıcı ile oyun listesinden "Oyun ve Uygulamaları" nasıl indirir ve kurarsınız? Rehber için TIKLAYIN

Teknik Meta Immersive Debugger ile Unity'de Gelişmiş Hata Ayıklama

Eagle

İçerik Üreticisi
Developer
XR Başlığı
Quest 2
Meta Immersive Debugger, Unity'de geliştirilen Meta projelerinde hata ayıklama sürecini kolaylaştırmak ve geliştirme döngüsünü hızlandırmak için tasarlanmış etkili bir araçtır. Bu araç, kod yazmayı bilmeyen kullanıcılar için bile kullanımı kolay olacak şekilde geliştirilmiştir ve özellikle karmaşık XR projelerinde büyük avantajlar sağlar.

Hata Ayıklama Sürecindeki Sorunlar

Meta projelerinde genellikle şu yöntemlerle hata ayıklama yapılır:
  1. Fiziksel Cihaz Testi: Projeleri fiziksel bir Meta cihazına yükleyerek test etmek.
  2. Meta Link (Oculus Link): Cihazı bilgisayara bağlayarak IDE hata ayıklayıcılarını kullanmak.
  3. Debug.log Girdileri: Hataların olabileceği yerlere log girişleri eklemek.
  4. Çalışma Zamanı Denetçileri: Unity Asset Store’dan alınan veya özel olarak geliştirilen araçlarla hiyerarşi ve bileşenlerin görünürlüğünü artırmak.
Bu yöntemler zaman alıcıdır ve sınırlı bir hata ayıklama deneyimi sunar. Fiziksel cihaz testleri, cihaz işletim sistemi ve fiziksel ortam farklarından dolayı eksik kalabilir.

Meta Immersive Debugger ile Çözüm

Meta Immersive Debugger, yukarıdaki sorunları çözmek için geliştirilmiştir. Fiziksel bir cihaz yerine simülatör kullanarak geliştirme sürecini hızlandırır. Ayrıca, kod bilgisi olmayan kullanıcıların bile projedeki işlevleri test etmesine olanak tanır.

Geliştirici Olmayanlar için Kolaylık

Immersive Debugger, kodlama bilgisi olmayan kullanıcıların bile hata ayıklama yapmasına olanak tanır. Unity içerisindeki herhangi bir oyun nesnesine "Debug Inspector" bileşeni eklenerek, nesnenin tüm bileşenleri görünür hale getirilebilir.

Hata Ayıklama Araçları

  • Hata Ayıklama Gizmosu: Unity'nin yerleşik Gizmos'larına benzer şekilde çalışır.
  • Değişken Görselleştirme:
    • Vector3 değişkenleri için XYZ ekseni gösterimi.
    • Çizgi, nokta, düzlem veya küp gibi görsellerle veri görselleştirme.
  • Çalışma Zamanında Düzenleme: Değişkenler için kaydırıcılarla değer düzenleme.
    • Minimum ve maksimum değer tanımlanabilir.
  • Kategori Düzeni: Nesne bileşenlerini gruplandırma.

Uygulama Örneği

Örneğin, bir ölçüm uygulamasında, Meta denetleyicilerinden alınan girdilerle noktalar arasında mesafeyi ölçen bir bileşen (MeasureTapeFeature.cs) kullanıyorsanız:
  • Debug Inspector ile bu bileşenin değişkenlerini ve işlevlerini çalışma zamanında görüntüleyebilir ve düzenleyebilirsiniz.
  • Fiziksel cihaz kullanmadan simülatör üzerinde test yapabilirsiniz.
Meta Immersive Debugger, XR projelerinde geliştirme ve hata ayıklama süreçlerini standartlaştırmak ve hızlandırmak için güçlü bir araçtır. Kod yazmayı bilmeyen kullanıcılar için de erişilebilir olan bu araç, ekiplerin daha hızlı ve verimli çalışmasını sağlar.

Öne Çıkan Özellikler

  • Kullanıcı Dostu Arayüz: Unity projelerinde kolayca entegre edilebilir.
  • Simülatör Desteği: Klavye veya fiziksel denetleyicilerle simülatör üzerinde test yapma imkanı sunar.
  • Hata Ayıklama Kontrolleri: Çalışma zamanında değişkenleri ve işlevleri görünür hale getirerek dinamik hata ayıklama yapılmasını sağlar.

Immersive Debugger Kurulumu

  1. Meta XR SDK Yükleme:
    • Unity’nin Paket Yöneticisi aracılığıyla Meta XR All-In-One SDK veya Meta XR Core SDK kurulur.
  2. Immersive Debugger’ı Etkinleştirme:
    • Unity arayüzündeki sağ alt köşeden Meta simgesine tıklayın ve "Immersive Debugger" seçeneğini etkinleştirin.
  3. Geliştirme Yapısını Etkinleştirme:
    • Unity menüsünden Dosya > Yapı Ayarları > Geliştirme Yapısını Etkinleştir seçeneğini işaretleyin.

Kapsamlı Hata Ayıklayıcı​

MetaOptions.png


Yeni veya mevcut projenizde Meta Immersive Debugger'ı kurmak için şu adımları izleyin.

  • Meta XR All-In-One SDK veya Meta XR Core SDK'yı Unity'nin paket yöneticisi aracılığıyla yükleyin
  • Sağ alt köşedeki Meta simgesine > Immersive Debugger'a tıklayın (bkz. Şekil 1.1)
  • Immersive Debugger görünürlüğü için Etkinleştir seçeneğini açın ve kapatın
  • Dosya > Yapı Ayarları > Geliştirme Yapısını Etkinleştir'e gidin
    • Bu adım gereklidir, aksi takdirde Immersive Debugger seçenekleri gösterilmez. Bunu üretimde beğendiyseniz, neyin gerekli olduğunu açıklayan Meta'nın Gelişmiş Kullanımlar dokümanını inceleyin.



Kapsamlı Hata Ayıklayıcı​

ImmersiveDebugger.png

DebugInspector Unity bileşeni (Immersive Debugger'ın bir parçası)

Geliştirici olmayan biri olarak, Unity'deki herhangi bir oyun nesnesine bir `Debug Inspector` bileşeni ekleyebilirsiniz. Bu bileşen, oyun nesnesinin bileşenlerini otomatik olarak algılar ve üyeleri açıp kapatmanıza olanak tanır, böylece bunları bir çalışma zamanı denetçisinde açığa çıkarabilirsiniz (bunun nasıl göründüğünü görmek için Şekil 1.2'ye bakın).

Birkaç temel seçenek mevcuttur, ancak bu seçeneklerin üye türüne göre değişebileceğini unutmayın.
  • Hata Ayıklama Gizmosu: Unity'nin yerleşik Gizmos'larına benzer şekilde, bunlar altta yatan nitelik türüne dayanır. Örneğin, `Axis` niteliğine sahip bir `Vector3` değişkeni `Vector3` konumunda görüntülenecektir.
    • Eksen: XYZ tutamağını görüntüler
    • Nokta: Küçük bir 3D noktayı görüntüler
    • Çizgi: Bir çizgiyi görüntülemenize olanak tanır
    • Çizgiler: çizgiye benzer ancak kaynak bir vektör listesidir
    • Uçak: bir uçak görüntüler
    • Küp, Üst Orta Kutu ve Kutu: tam olarak adlarının önerdiği şeyi gösterir
  • Renk: Çalışma Zamanı Denetçisi alan panelinde görüntülenen RGBA renk seçimi
  • Ayarlanabilir: Bu türü bir kaydırıcıyla düzenlenebilir hale getirir ve bu tür değerini çalışma zamanında değiştirmenize olanak tanır
    • Min: en düşük değer
    • Max: en yüksek değer
  • Kategori: Üyeleri kendi müfettiş alanlarına gruplamanıza olanak tanır

Kapsamlı Hata Ayıklayıcı​

Tamam, bu noktaya kadar, Immersive Debugger'ın ne olduğunu ve Unity oyun nesneleri içinde `DebugInspector` bileşeninin nasıl kullanılacağını öğrendik. Bu harika çünkü kullanıcılara neyin açığa çıkarılıp neyin çıkarılmayacağı konusunda daha fazla kontrol sağlıyor. Peki ya geliştiricilere daha fazla güç vermek? Örneğin, bir kullanıcı arayüzü tasarımcısının işini bitirmesini beklemek zorunda kalmadan, yeni bir özelliği uyguladıktan hemen sonra bunu kullanmak faydalı olmaz mıydı? Kulağa hoş geldiğini biliyorum ve gerçekten de hoş, size bundan sonra göstermek istediğim şey bu.

Bir geliştirici olarak çeşitli seçeneklere erişiminiz var. Tıpkı Non-Devs bölümünde açıkladığım gibi, bunu kod içinde halledebilir veya daha da iyisi, `DebugInspector`'ı kendi `DebugMember` özniteliklerinizle birleştirebilirsiniz. Peki bu `DebugMembers` tam olarak nedir? Son geliştirici videomda yaptığım şeyin bir kesitini göstererek nasıl çalıştıklarını açıklayayım.

Kod:
// measure tape rendering variables
[DebugMember(Category = "MeasureTapeFeature", Tweakable = true, Min = 0.025f, Max = 0.1f)]
[SerializeField] private float tapeWidth = 0.01f;

[DebugMember(Category = "MeasureTapeFeature", Tweakable = true, Min = 0.005f, Max = 0.1f)]
[SerializeField] private float measurementInfoLength = 0.2f;

// controller measuring tape line area variables
[DebugMember(Category = "MeasureTapeFeature", GizmoType = DebugGizmoType.Axis)]
[SerializeField] private Transform leftControllerTapeArea;

[DebugMember(Category = "MeasureTapeFeature", GizmoType = DebugGizmoType.Axis)]
[SerializeField] private Transform rightControllerTapeArea;

// tape lines clearing method
[DebugMember(Category = "MeasureTapeFeature")]
public void ClearAllLines()
{
    foreach (var tapeLine in savedTapeLines)
    {
        Destroy(tapeLine.TapeLine);
    }
    savedTapeLines.Clear();
}

Tamam, yukarıda sahip olduklarımızı parçalayalım. `DebugMember` niteliği, daha önce Unity Inspector'da kullandığımız niteliğe benzer, ancak burada her üyeyi bu nitelik ve bir dizi seçenekle süslüyoruz. `tapeWidth` ve `measurementInfoLength` değişkenleri `float` türündedir. Bu değişkenler, Productivity App'in çizgilerin kalınlığını ve ölçüm etiketinin ofsetini belirlemesine yardımcı olur. `Tweakable=true` değerini ayarlayarak, Immersive Debugger'a çalıştırdığımızda bu alanları düzenlenebilir kaydırıcılar olarak eklemesini talimatlandırıyoruz. `Category`, çalışma zamanı denetçisindeki gruplamalar için kullanılır ve `Min` ve `Max` değer kısıtlamalarını tanımlar.

Sonra, ikisi de dönüşüm olan `leftControllerTapeArea` ve `rightControllerTapeArea`'mız var. Bunları `Axis` türünde bir Debug Gizmo'ya sahip olacak şekilde ayarladık, böylece Immersive Debugger çalıştığında, bunların görünürlüğünü açıp kapatma seçeneğiniz olacak ve bu da her biri için bir Axis Gizmo'su oluşturacak.

Son olarak, `ClearAllLines` bir yöntemdir. Şaşırtıcı gelebilir, ancak yöntemleri de açığa çıkarabilirsiniz. Bu durumda, Immersive Debugger'a bu yöntemi açığa çıkarmasını söylüyoruz, bu da "ClearAllLines" adında bir düğme oluşturacak ve bunu doğrudan yürütmenize olanak tanıyacaktır.

Kapsamlı Hata Ayıklayıcı​

Immersive Debugger'ı test ederken beni çok heyecanlandıran bir özellik günlük kaydı yetenekleriydi. XR geliştirme kariyerim boyunca kaç kez çalışma zamanında hata ayıklama bilgilerini görüntülemek için özel bir kullanıcı arayüzü günlüğü yazmak zorunda kaldığımı sayamam—dürüst olmak gerekirse, sayısını unuttum. Neyse, Meta, Immersive Debugger'da Unity günlüklerinizin tam bir kopyasını, hata ayıklama bilgileri, hata ayıklama uyarıları, hata ayıklama hataları ve hatta Unity'de gördüklerinizle eşleşen simgeler ve yığın izleriyle birlikte ekledi.

Peki, bu günlüklere nasıl yazıyorsunuz? İşte en iyi kısım: `YourLogger.Instance.LogInfo` veya `MyCoolLogger.Instance.Log` gibi özel uygulamaya veya özel günlükleme yöntemlerine gerek yok. Bunun yerine, yerleşik `Debug.Log`, `Debug.LogWarning` ve `Debug.LogError`'ı kullanırsınız. Aşağıda bu işlevi test ederken kullandığım bir örnek bulunmaktadır.


Console.png


Kod:
[DebugMember(Category = "MenuInteraction")]
private void AddLevelerFeature()
{
   Instantiate(levelerFeaturePrefab);
   Debug.Log("New leveler feature(tool) has been added");
}

[DebugMember(Category = "MenuInteraction")]
private void ClearAllTapeLines()
{
   MeasureTapeFeature.Instance.ClearAllLines();
   Debug.Log("All tape lines were removed");
}


ImmersiveDebugger_LogOptions.png

 
Meta Immersive Debugger'ı inceledim ve oldukça etkileyici görünüyor. Özellikle kod bilmeyen kullanıcılar için hata ayıklamayı kolaylaştıran Debug Inspector bileşeni çok işlevsel. Çalışma zamanında değişkenleri düzenleyebilmek ve görselleştirebilmek de büyük bir avantaj. Simülatör desteğiyle fiziksel cihaz testlerine olan bağımlılığı azaltmak harika bir yaklaşım. 👍

Yazıda bahsedilen `DebugMember` özelliği de geliştiriciler için oldukça kullanışlı duruyor. Kendi özelleştirilmiş hata ayıklama bilgilerini ekleyebilmek ve bunları kategorilere ayırabilmek, geliştirme sürecini kesinlikle hızlandıracaktır. Günlük kaydı özelliği de sık karşılaştığımız bir sorunu çözüyor gibi görünüyor.

Kurulum adımları da gayet açıklayıcı görünüyor. Tek dikkat çeken nokta, "Geliştirme Yapısını Etkinleştir" adımının üretimde kullanımı için ek açıklama isteği. Bu konuda daha detaylı bir bilgi faydalı olabilir. Genel olarak, Meta Immersive Debugger, Unity'de VR/AR geliştirme yapanlar için değerli bir araç gibi duruyor.
 
Meta Immersive Debugger'ı kullanmaya başlamak için heyecanlıyım 👍. Yazınızda anlattığınız yöntemler, özellikle XR projelerinde hata ayıklamayı çok kolaylaştıracak gibi görünüyor. Özellikle kod bilmeyen kişiler için Debug Inspector bileşeninin kullanımı çok pratikmiş.

Yazıda açıklanan kurulum adımları da gayet net ve anlaşılır. Sorunsuz bir kurulum için Meta XR SDK'nın doğru versiyonunu indirmenin ve "Geliştirme Yapısını Etkinleştir" adımını atlamadan uygulamanın önemini vurgulamanız iyi olmuş.

`DebugMember` özelliği ve çalışma zamanında değişken düzenleme imkanı da gerçekten işlevsel görünüyor. Bu özellik sayesinde geliştirme döngüsünde zaman kazanılacağına eminim. Verdiğiniz kod örneği de oldukça açıklayıcı. Paylaştığınız görseller de konuyu daha iyi anlamama yardımcı oldu. Teşekkürler.
 

Trend içerikler

Yeni Eklenen Oyunlar

Sitemiz bir forum sitesi olduğu için kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. 5651 sayılı yasaya göre bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. 5651 sayılı yasaya göre sitemiz mesajları kontrolle yükümlü olmayıp, yasaya aykırı yada telif hakkı içeren paylaşımlar BURADAN bize ulaşıldığı taktirde, ilgili konu en geç 48 saat içerisinde kaldırılacaktır. Sitemizde Bulunan Videolar YouTube, Facebook, Dailymotion, v.b. video paylaşım sitelerinden alınmaktadır. Telif hakları sorumluluğu bu sitelere aittir. Videoların hiç biri sunucularımızda bulunmamaktadır.
Geri
Üst