Tải tất cả nội dung từ thư mục


8

Tôi muốn hỏi, có cách nào để tải trong xna tất cả nội dung từ thư mục không?
Ví dụ trong nội dung của tôi, tôi có:

Hình ảnh / anh hùng
Hình ảnh / xe
Hình ảnh / cây


Tôi muốn làm một cái gì đó như thế này

Dictionary<string,Model> models = new ...

foreach(string name in content.getNames("Images"))
{
    models[name] = content.load<Model>("Images\\" + name);
}

Câu trả lời:


3

Có một trang MSDN tuyệt vời về một phương thức truy cập thư mục hữu ích và ai đó đã hỏi một câu hỏi tương tự trên StackOverflow .

Về cơ bản, tìm các tệp trong thư mục đó, khởi tạo một mảng có kích thước đó và sau đó lặp qua các tệp đó, tải các tài nguyên.


Nó không tĩnh, nhưng có một thuộc tính Nội dung trên lớp Trò chơi thường được sử dụng trong XNA.
Michael Coleman

Trên thực tế, câu trả lời mà bạn liên kết là một phương thức mở rộng cho ContentManagerlớp. Vì vậy, bạn sẽ sử dụng nó như là Content.LoadContent<Texture2D>("myFolder"). Các Contenttài sản trên Gamechỉ đơn giản là một thể hiện của các ContentManagerlớp - bạn có thể sử dụng bất kỳ trường hợp bạn muốn. (Không có gì về điều này đã thay đổi giữa các phiên bản XNA.)
Andrew Russell

@Andrew Cảm ơn bạn! Tôi đã xóa ghi chú sai và vô nghĩa của tôi.
Anko


0

Bạn có thể dễ dàng liệt kê tất cả các tệp trong một thư mục và sau đó tải từng tệp một. Theo mặc định, tất cả các tệp nội dung được lưu trữ trong một thư mục ngay bên cạnh ứng dụng chính của bạn, do đó bạn chỉ cần kiểm tra nội dung của hướng đó. Bạn cũng có thể sử dụng hàm đệ quy nếu bạn muốn tải tất cả các tệp từ tất cả các thư mục. đây là một mẫu nhỏ:

string[] files = Directory.GetFiles("content\\Images");
for (int i = 0; i < files.Count(); i++)
{
    textures.Add(Content.load<Texture2D>(files[i].Remove(0,"Content\\".Length)));
}

lưu ý rằng khi bạn yêu cầu hệ thống nội dung tải một kết cấu, bạn nên bỏ thư mục "nội dung" khỏi tên tệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.