Unity Asset’lerinizin ve Sahne Objelerinizin Nerelerde Kullanıldığını Bulmak

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

Yeniden merhabalar,

Unity‘de bazen bir Texture‘un hangi materyallerde kullanıldığını veya sahnedeki bir objenin hangi public değişkenlere değer olarak verildiğini bulmak isteyebilirsiniz. Bu gibi durumlar için çok eskiden yazdığım ama sürekli güncel tuttuğum bir plugin’i paylaşacağım: Asset Usage Detector.

Asset Store: https://assetstore.unity.com/packages/tools/utilities/asset-usage-detector-112837

Alternatif Link: https://github.com/yasirkula/UnityAssetUsageDetector/releases

Detaylar için yazının devamını okuyabilirsiniz…

Plugin’i projenize import ettikten sonra, Window-Asset Usage Detector-New Window ile Asset Usage Detector penceresini açabilirsiniz:

Bu pencerede karşımıza gelen ayarlar şunlar:

Find references of: hangi asset’lerin ve sahne objelerinin kullanıldıkları yerleri bulmak istiyorsanız, onları bu listeye ekleyin (sağdaki + tuşu ile listeyi genişletebilir veya yeni objeleri “Find references of” yazısına sürükle-bırak yapabilirsiniz). Buraya bir klasör sürüklerseniz, klasörün tüm içeriği listeye dahil olur. Eğer sürüklediğiniz bir objenin alt objeleri varsa, onların aramaya dahil olup olmayacaklarını “Include sub-assets in search” kısmından belirleyebilirsiniz.

SEARCH IN: yukarıdaki listeye eklenen objelerin nerelerde kullanıldıklarını bulmak için, projede nerelerin aranacağını belirler:

  • Project window (Assets folder): projede yer alan asset’ler aranır. Sadece belli asset’lerin aranmasını istiyorsanız, onları “Search following asset(s) only” listesine ekleyebilirsiniz (önceki listede olduğu gibi, tüm bu listelere klasörleri de sürükle-bırak yapabilirsiniz). Belli asset’lerin aranmasını istemiyorsanız da onları “Don’t search following asset(s)” listesine ekleyebilirsiniz
  • Don’t search “Find references of” themselves for references: eğer bu seçeneği işaretlerseniz, “Find references of” listesine eklediğiniz objeler aranmaz. Yani o listeye eklediğiniz objelerin kendi içlerinde referansları varsa (örneğin objedeki bir component’in public bir değişkeni, objenin kendisine referans ediyorsa), bu referanslar bulunmaz. Ben bu seçenek açıkken arama sonuçlarının daha temiz olduğunu düşünüyorum
  • Currently open (loaded) scene(s): şu anda editörde açık olan sahnelerdeki objeler aranır
  • Scenes in Build Settings: Build Settings‘e eklenen sahnelerdeki objeler aranır. Eğer “Ticked only” seçili ise, sadece build’a dahil olan (tiki işaretli) sahneler aranırken “All” seçili ise, bu listedeki tüm sahneler aranır
  • All scenes in the project: Projede yer alan tüm sahnelerdeki objeler aranır. Eğer bazı sahnelerin aramaya dahil olmasını istemiyorsanız, onları “Don’t search in following scene(s)” listesine ekleyebilirsiniz
  • Project Settings: Edit-Project Settings‘teki Player Settings, Graphics Settings gibi kısımlar da aranır

SETTINGS: aramayla ilgili diğer bir takım ayarları barındırır:

  • Lazy scene search: normalde “Find references of” objelerinin sahnelerde tam olarak nerelerde kullanıldığını tespit etmek için, o sahneleri editörde açmak gerekir. Çünkü ancak böyle o sahnelerin içindeki objelere erişim sağlayabiliriz. Asset Usage Detector bu işlemi otomatik olarak yapar ancak özellikle büyük sahnelerde bu, aramanın çok uzun sürmesine sebep olabilir. O yüzden eğer “Lazy scene search” seçeneği seçili olursa, Asset Usage Detector bir sahnede olası referans tespit ederse o sahneyi arama sonuçlarında listeler ama henüz sahneyi açmaz. Sahneyi açıp içindeki referansa nokta atışı yapmak için, arama sonuçları penceresinden sahnenin yanındaki Refresh butonuna elle basmak gerekir (bu butonu birazdan göreceğiz)
  • I haven’t modified any assets/scenes since the last search: Asset Usage Detector ile az önce zaten bir arama yaptıysanız ve o arama ile şimdiki arama arasında geçen zamanda hiçbir asset veya sahnede bir değişiklik yapmadıysanız, bu seçeneği seçerek aramanın bir tık daha hızlı gerçekleşmesini sağlayabilirsiniz. Ben bu seçeneği kapalı bırakıyorum çünkü daha sonra onu açık unutmak istemiyorum. Size de kapalı bırakmanızı tavsiye ederim
  • Show detailed progress bar: aramanın % kaçının bittiğini gösteren bir progress bar mevcuttur ama Asset Usage Detector’un bu barı sürekli güncellemesi, aramanın daha yavaş olmasına sebep olmaktadır. O yüzden özellikle asset’ler aranırken bu bar güncellenmez. Ancak dilerseniz, “Show detailed progress bar” seçeneğini açarak barın sürekli güncellenmesini sağlayabilirsiniz (dediğim gibi, arama biraz daha uzun sürecektir)

Tüm bu ayarları istediğiniz gibi ayarladıktan sonra, GO! butonuna basarak aramanın başlamasını sağlayabilirsiniz.

İPUCU: Asset Usage Detector penceresindeki ayarları hiç ellemeyecek, sadece “Find references of” listesini değiştirip arama yapacaksanız, kısayol olarak ilgili asset’lere veya sahne objelerine Project veya Hierarchy pencerelerinden sağ tıklayıp Search for References diyebilirsiniz. Sahne objelerinde 2 seçenek bulunmakta: This Object Only ile sadece seçili sahne objelerinin kullanıldıkları yerler bulunurken, Include Children ile bu sahne objelerinin tüm child objelerinin de kullanıldıkları yerler bulunur.

Arama işlemi tamamlandıktan sonra, arama sonuçları sayfasıyla karşılaşacaksınız:

Bu pencerede gördüğümüz arayüz elemanları şunlar:

Reset Search: arama ayarları sayfasına geri dönmeye yarar.

Restore initial scene setup: aramadan önce editörde açık olmayan sahnelerden bazıları arama esnasında açıldıysa (içlerinde referans bulunduğu durumlarda), “Reset Search” butonuna basınca bu sahnelerin otomatik olarak kapanmasını, yani sahne düzeninin aramadan önceki düzene dönmesini sağlar.

Show tooltips: arama sonuçlarının üzerinde imleci bekletince, ilgili arama sonucunun içeriğinin tooltip olarak gözükmesini sağlar. Bazı aramalarda bir objenin çok fazla referansı varsa, o objenin sarı kutucuğu çok büyük olabilir. Bu durumlarda o kutucukta ne yazdığını görmek için pencereyi aşağı scroll yapmak yerine tooltip’i kullanabilirsiniz.

I haven’t modified any assets/scenes since the last search: ne işe yaradığından arama ayarları kısmında bahsettim. Bu seçenek seçili ise, aramayı yenilemek (Refresh) de bir tık daha hızlı gerçekleşir.

Path drawing mode: arama sonuçlarının nasıl listeleneceğini belirler. Arama sonuçları gruplardan (mavi renkli başlıklar) ve bu grupların içerisindeki yan yana dizili sarı kutucuklardan meydana gelir. Sarı kutucukların oluşturduğu her bir satır, “Find references of” listesindeki objelerden birinin kullanıldığı bir yeri gösterir. Objenin nasıl kullanıldığını anlamak için, o satırdaki sarı kutucuklar soldan sağa doğru okunur. Eğer bir sarı kutucuğun içerisinde [ ve ] sembolleri arasında metin varsa, o metin o kutucuğun bir solundaki kutucukla olan bağlantısını gösterir. Sarı kutucuklara tıklayarak, onların temsil ettikleri objeleri seçebilirsiniz.

Dilerseniz örnek olarak yukarıdaki resimde yer alan referansları inceleyelim:

  • İlk satırda, “TestMat 1” isimli bir materyalin, “Find references of” listesindeki “Custom/ctRefLocalCubemap” isimli shader’ı kullandığını görüyoruz (bu shader, “Find references of” listesindeki “UdemyShader” klasörünün içinde yer almakta. En sağdaki sarı kutucuklardaki objeler, daima “Find references of” listesindeki objelerdir)
  • İkinci satırda, “Assets/Dynamic Panels Demo.unity” sahnesinde muhtemel bir referans olduğunu ancak Lazy Search seçili olduğu için o sahnenin detaylı olarak aranmadığını görüyoruz. Eğer o kategorinin sağındaki Refresh butonuna basarsak, “Dynamic Panels Demo” sahnesi otomatik olarak açılacak ve içindeki referanslar (varsa) listeye eklenecek. Refresh butonuna tekrar tıklarsak, o sahne tekrar aranacak
  • Üçüncü satırda, “Main Camera” objesindeki TestScript component’indeki “textex” isimli değişkeninin (variable) değerinin ZomBunnyDiffuse isimli Texture2D olduğunu görüyoruz
  • Dördüncü satırda, Bear isimli objenin MeshFilter component’ine Mesh olarak Zombunny‘nin verildiğini görüyoruz
  • En son satırda ise, Bear isimli objenin MeshRenderer component’ine Material olarak HelloShader materyalinin verildiğini görüyoruz. Bu satırın ve 4. satırın ilk objeleri ortak olduğu için (Bear GameObject‘i), o obje 2 satırı da kaplayan bir sarı kutucuk olarak gösterilmekte (bu sadece “Path drawing mode“un değeri Full iken geçerli)

Gelelim “Path drawing mode“un alabileceği değerlere:

  • Full: aranan objelere giden referanslar (objelerin nerelerde kullanıldığı) en ayrıntılı şekilde gösterilir. Üstteki resimde olduğu gibi, bazı sarı kutucuklar birden çok satırı kaplayabilir
  • Shorter: aranan objelere giden referansların sadece en alakalı kısımları gösterilir. Örneğin yukarıdaki resimdeki TestScene‘in sonuçları şu şekle bürünür:
  • Shortest: aranan objelere giden referansların sadece en sondaki 2 sarı kutucuğu gözükür. Üstteki aramada bu seçenek ile Shorter seçeneği arasında bir fark yoktur ama örneğin alttaki aramada 2 seçenek arasındaki farkı görebilirsiniz (bu aramada referans, Button objesinin “On Click” event’ine eklenmiş bir fonksiyonda bulunmakta):

Böylece bu dersin de sonuna geldik. Başka derslerde görüşmek üzere!

yorum
  1. ertbaran dedi ki:

    Elleriniz dert görmesin. Teşekkürler, faydasını çok gördüm.

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 )

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.