Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de AssetDatabase.FindAssets() Metodu ile Varlık Yönetimi

Paylaşan: Unity Eğitim 19 September 2025 3 dakika okuma 101 görüntülenme

Unity oyun geliştirme sürecinde, projeleriniz büyüdükçe varlıklarınızı (assets) yönetmek ve bulmak giderek zorlaşabilir. İşte tam bu noktada AssetDatabase.FindAssets() metodu devreye girer. Bu güçlü metod, Unity projenizdeki tüm varlıkları aramanıza ve belirli kriterlere göre filtrelemenize olanak tanır. Bu rehberde, AssetDatabase.FindAssets() metodunu nasıl kullanacağınızı, farklı parametrelerini ve kullanım örneklerini detaylı olarak inceleyeceğiz.

AssetDatabase.FindAssets() Metodunun Temelleri


AssetDatabase.FindAssets() metodu, bir dizi string döndürür. Bu string'ler, projenizdeki varlıkların GUID'leridir (Global Unique Identifier). GUID'ler, her bir varlığı benzersiz bir şekilde tanımlar. Bu GUID'leri kullanarak, daha sonra AssetDatabase.GUIDToAssetPath() metodu ile varlıkların dosya yollarına ulaşabilirsiniz.

Temel Kullanım


En basit kullanımda, AssetDatabase.FindAssets() metodu, projedeki tüm varlıkları arar:
string[] guids = AssetDatabase.FindAssets(""); // Tüm varlıkları bulur

foreach (string guid in guids) {
string path = AssetDatabase.GUIDToAssetPath(guid);
Debug.Log(path); // Varlığın dosya yolunu yazdırır
}


Bu kod, projenizdeki tüm varlıkların dosya yollarını konsola yazdıracaktır.

Filtreleme


AssetDatabase.FindAssets() metodu, ikinci bir parametre alarak aramayı filtrelemenize olanak tanır. Bu parametre, arama yapılacak klasörün yoludur. Eğer boş bırakılırsa, tüm proje aranır. Örneğin, sadece "Assets/Sprites" klasörü içindeki varlıkları bulmak için:
string[] guids = AssetDatabase.FindAssets("", new[] { "Assets/Sprites" });

foreach (string guid in guids) {
string path = AssetDatabase.GUIDToAssetPath(guid);
Debug.Log(path);
}


Varlık Türü Filtreleme


Daha gelişmiş filtreleme için, arama sorgusunda belirli bir varlık türü belirtebilirsiniz. Örneğin, sadece PNG resimlerini bulmak için:
string[] guids = AssetDatabase.FindAssets("t:texture2D", new[] { "Assets/Sprites" });

foreach (string guid in guids) {
string path = AssetDatabase.GUIDToAssetPath(guid);
Debug.Log(path);
}


Burada "t:texture2D", PNG dosyalarının (ve diğer Texture2D türündeki varlıkların) arama sorgusunda kullanılması gerektiğini belirtir. Diğer varlık türleri için farklı etiketler kullanılabilir. Örneğin:

  • t:prefab: Prefablar

  • t:script: C# script'leri

  • t:model: 3D modeller

  • t:audio: Ses dosyaları


Ad İçeren Filtreleme


Varlık adlarını içeren filtreleme yapmak için, arama sorgusunda varlık adının bir parçasını kullanabilirsiniz. Örneğin, adı "Player" içeren tüm varlıkları bulmak için:
string[] guids = AssetDatabase.FindAssets("Player");

foreach (string guid in guids) {
string path = AssetDatabase.GUIDToAssetPath(guid);
Debug.Log(path);
}


Bu, "Player" içeren tüm varlıkları, her türden ve her klasörde bulur. Daha spesifik bir arama için, varlık türünü ve klasör yolunu birleştirebilirsiniz.

Örnek Senaryo: Tüm Ses Dosyalarını Bulma ve Listeleme


Projenizdeki tüm ses dosyalarını bulup, isimlerini bir listeye eklemek istediğinizi varsayalım. Bu işlemi şu şekilde gerçekleştirebilirsiniz:
string[] guids = AssetDatabase.FindAssets("t:audio");
List<string> audioFiles = new List<string>();

foreach (string guid in guids) {
string path = AssetDatabase.GUIDToAssetPath(guid);
audioFiles.Add(path);
}

foreach (string filePath in audioFiles) {
Debug.Log(filePath);
}


Önemli Notlar



  • AssetDatabase sınıfının fonksiyonları, sadece Unity editöründe çalışır. Oyun çalışırken bu fonksiyonlar çalışmaz.

  • Performans için, gereksiz yere tüm projeyi taramak yerine, spesifik klasörler ve varlık türleri belirterek aramayı daraltın.


Bu rehberde, AssetDatabase.FindAssets() metodunun temel kullanımını ve farklı filtreleme yöntemlerini inceledik. Bu güçlü metodu kullanarak, Unity projelerinizdeki varlıkları daha verimli bir şekilde yönetebilir ve geliştirme sürecinizi hızlandırabilirsiniz.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!