2015-04-08 13 views
6

Trong dự án Unity của tôi có một vài phiên bản của lớp ArmourType (đây là các tài sản, các đối tượng có thể viết). Tôi đang cố gắng để hiển thị chúng trong một danh sách thả xuống trong thanh tra, và điều này hoạt động. Tuy nhiên, tôi sử dụngLàm cách nào để tìm tất cả nội dung của một loại?

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

để tìm tất cả các trường hợp này. Điều này chỉ tìm thấy các đối tượng được nạp vào bộ nhớ, vì vậy đôi khi nó chỉ tìm thấy một số tài sản cần thiết. Đây là tài liệu, do đó, không phải là một lỗi, nhưng rất khó chịu ở lần.

Vì vậy, câu hỏi của tôi là, là có một cách khác nhau nhận được tất cả những tài sản mà trả lại những điều đó không được nạp vào bộ nhớ? Hoặc có lẽ là có một cách để làm cho Unity tải các tài sản khi họ đang tìm kiếm?

Lưu ý: Tôi đang sử dụng Unity5 và C#.

Trả lời

9

Đây có phải là những gì bạn đang tìm kiếm không?

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 là một kịch bản Editor. Nếu bạn muốn làm một điều tương tự trong trận đấu diễn ra kịch bản có liên quan trong một thư mục Resources (điều này đảm bảo họ sẽ được đưa vào xây dựng ngay cả khi không được liên kết trong cảnh) và sử dụng:

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

này dường như thực sự để làm việc: D Cảm ơn rất nhiều! –

+2

Tôi chỉ phát hiện ra rằng bạn không thể sử dụng điều này trong một trò chơi. Chỉ dành cho trình chỉnh sửa. Cách thay thế tôi tìm thấy trong trò chơi là 'Tài nguyên.LoadAll (" ")'. Dường như làm việc ok nhưng có thể chậm. –

+0

Cảm ơn, tôi đã cập nhật câu trả lời để dễ tham khảo hơn. Điều này có làm việc ngay cả đối với các tập lệnh trong thư mục con trong Tài nguyên không? Tôi hy vọng nó sẽ không nếu "" chỉ có nghĩa là gốc tài nguyên. – Huacanacha

Các vấn đề liên quan