Laden Sie den gesamten Inhalt aus dem Ordner

8

Ich möchte fragen, gibt es eine Möglichkeit, alle Inhalte aus dem Ordner in xna zu laden?
Zum Beispiel habe ich in meinem Inhalt:

Bilder / Heldenbilder
/ Auto
Bilder / Baum


Ich möchte so etwas machen

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

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

Antworten:

3

Es gibt eine großartige MSDN-Seite über eine nützliche Verzeichniszugriffsmethode, und jemand hat eine ähnliche Frage zu StackOverflow gestellt .

Suchen Sie im Grunde genommen die Dateien in diesem Verzeichnis, initialisieren Sie ein Array dieser Größe und durchlaufen Sie diese Dateien, wobei Sie die Ressourcen laden.

Anko
quelle
Es ist nicht statisch, aber es gibt eine Content-Eigenschaft in der Game-Klasse, die üblicherweise in XNA verwendet wird.
Michael Coleman
Tatsächlich ist die Antwort, die Sie verknüpft haben, eine Erweiterungsmethode für die ContentManagerKlasse. Sie würden es also als verwenden Content.LoadContent<Texture2D>("myFolder"). Die ContentEigenschaft on Gameist einfach eine Instanz der ContentManagerKlasse - Sie können jede beliebige Instanz verwenden. (Nichts daran hat sich zwischen den XNA-Versionen geändert.)
Andrew Russell
@ Andrew Danke! Ich habe meine falsche und sinnlose Notiz gelöscht.
Anko
0

Sie können ganz einfach alle Dateien in einem Ordner auflisten und sie dann einzeln laden. Standardmäßig werden alle Inhaltsdateien in einem Ordner direkt neben Ihrer Hauptanwendung gespeichert, sodass Sie nur nach dem Inhalt dieser Richtung suchen müssen. Sie können auch eine rekursive Funktion verwenden, wenn Sie alle Dateien aus allen Verzeichnissen laden möchten. Hier ist ein kleines Beispiel:

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

Beachten Sie, dass Sie den Ordner "content" aus dem Dateinamen löschen sollten, wenn Sie das Inhaltssystem zum Laden einer Textur auffordern.

Ali1S232
quelle