Muat semua konten dari folder


8

Saya ingin bertanya, apakah ada cara memuat di xna semua konten dari folder?
Misalnya di konten saya yang saya miliki:

Gambar / pahlawan
Gambar / mobil
Gambar / pohon


Saya ingin membuat sesuatu seperti ini

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

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

Jawaban:


3

Ada halaman MSDN yang bagus tentang metode akses direktori yang berguna dan seseorang mengajukan pertanyaan serupa di StackOverflow .

Pada dasarnya, cari file yang ada di direktori itu, inisialisasi array dengan ukuran itu dan kemudian iterate melalui file-file itu, memuat sumber daya.


Ini tidak statis, tetapi ada properti Konten di kelas Game yang biasa digunakan di XNA.
Michael Coleman

Sebenarnya jawaban yang Anda tautkan adalah metode ekstensi untuk ContentManagerkelas. Jadi, Anda akan menggunakannya sebagai Content.LoadContent<Texture2D>("myFolder"). The Contentproperti pada Gamehanyalah sebuah contoh dari ContentManagerkelas - Anda bisa menggunakan contoh apapun yang Anda suka. (Tidak ada tentang ini telah berubah antara versi XNA.)
Andrew Russell

@Andrew Terima kasih! Saya telah menghapus catatan saya yang salah dan tidak berguna.
Anko


0

Anda dapat dengan mudah mendaftar semua file di dalam folder dan kemudian memuatnya satu per satu. Secara default semua file konten disimpan dalam folder tepat di sebelah aplikasi utama Anda sehingga Anda hanya perlu memeriksa konten dari arah itu. Anda juga dapat menggunakan fungsi rekursif jika Anda ingin memuat semua file dari semua direktori. di sini adalah sedikit contoh:

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)));
}

perhatikan bahwa ketika Anda meminta sistem konten untuk memuat tekstur, Anda harus membuang folder "konten" dari nama file.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.