Charger tout le contenu du dossier

8

Je veux demander, est-il possible de charger dans xna tout le contenu du dossier?
Par exemple dans mon contenu j'ai:

Images / Images de héros
/
Images de voiture / arbre


Je veux faire quelque chose comme ça

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

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

Réponses:

3

Il existe une excellente page MSDN sur une méthode d'accès au répertoire utile et quelqu'un a posé une question similaire sur StackOverflow .

Fondamentalement, recherchez les fichiers qui se trouvent dans ce répertoire, initialisez un tableau de cette taille, puis parcourez ces fichiers, en chargeant les ressources.

Anko
la source
Ce n'est pas statique, mais il existe une propriété Content sur la classe Game qui est couramment utilisée dans XNA.
Michael Coleman
En fait, la réponse que vous avez liée est une méthode d'extension pour la ContentManagerclasse. Vous l'utiliseriez donc comme Content.LoadContent<Texture2D>("myFolder"). La Contentpropriété on Gameest simplement une instance de la ContentManagerclasse - vous pouvez utiliser n'importe quelle instance de votre choix. (Rien à ce sujet n'a changé entre les versions XNA.)
Andrew Russell
@Andrew Merci! J'ai supprimé ma note fausse et inutile.
Anko
0

Vous pouvez facilement répertorier tous les fichiers dans un dossier, puis les charger un par un. Par défaut, tous les fichiers de contenu sont stockés dans un dossier juste à côté de votre application principale, il vous suffit donc de vérifier le contenu de cette direction. Vous pouvez également utiliser une fonction récursive si vous souhaitez charger tous les fichiers de tous les répertoires. voici un petit échantillon:

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

notez que lorsque vous demandez au système de contenu de charger une texture, vous devez supprimer le dossier "content" du nom de fichier.

Ali1S232
la source