2015-04-08 15 views
6

Birlik projemde, birkaç tane ArmourType sınıfı var (bunlar varlıklar, betik nesneleridir). Bunları müfettişteki bir açılır listede göstermeye çalışıyorum ve bu işe yarıyor. Ancak, tüm bu örnekleri bulmak içinBir türün tüm varlıkları nasıl bulunur?

List<ArmourType> armourTypes = Resources.FindObjectsOfTypeAll<ArmourType>(); 

kullanın. Bu sadece belleğe yüklenen nesneleri bulur, bu nedenle zaman zaman sadece gerekli varlıkların bir kısmını bulur. Bu belgelenmiştir, bu yüzden bir hata değil, ama bazen çok can sıkıcı.

Benim sorum şu ki, bellekte yüklü olmayanları döndüren tüm bu varlıkların elde edilmesinin farklı bir yolu var mı? Ya da belki de Unity'nin varlıklarını aradıklarında yüklemesi için bir yol var mıdır?

Not: Unity5 ve C# kullanıyorum.

cevap

9

Bu sizin için mi arıyorsunuz?

string[] guids = AssetDatabase.FindAssets ("t:ArmourType", null); 
foreach (string guid in guids) { 
    Debug.Log (AssetDatabase.GUIDToAssetPath(guid)); 
} 

http://docs.unity3d.com/ScriptReference/AssetDatabase.FindAssets.html

AssetDatabase Editör komut dosyasıdır. alakalı bir Kaynakları klasöründe komut (bu onlar sahnede bağlantılı olmayan bile yapı dahil edilecektir sağlar) ve kullanmak oyun içi yer benzer bir şey yapmak isterseniz:

Resources.LoadAll<ArmourType>(""); 
+0

Bu gerçekten görünüyor çalışmak: D Çok teşekkürler! –

+2

Bunu bir oyunda kullanamayacağınızı öğrendim. Sadece editör için. Oyun içi bulduğum alternatif "Resources.LoadAll (" ")' dır. Tamam çalışıyor gibi görünüyor ama yavaş olabilir. –

+0

Teşekkürler, daha kolay başvuru için cevabı güncelledim. Bu, Kaynaklar altındaki bir alt klasördeki komut dosyaları için bile çalışır mı? "" Sadece Kaynaklar kökü anlamına gelir. – Huacanacha

İlgili konular