Carregar todo o conteúdo da pasta

8

Eu quero perguntar, existe maneira de carregar em xna todo o conteúdo da pasta?
Por exemplo, no meu conteúdo, tenho:

Images / hero
Images / car
Images / tree


Quero fazer algo assim

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

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

Respostas:

3

Há uma ótima página do MSDN sobre um método útil de acesso ao diretório e alguém fez uma pergunta semelhante no StackOverflow .

Basicamente, encontre os arquivos que estão nesse diretório, inicialize uma matriz desse tamanho e, em seguida, repita esses arquivos, carregando nos recursos.

Anko
fonte
Não é estático, mas há uma propriedade Content na classe Game, que é comumente usada no XNA.
Michael Coleman
Na verdade, a resposta que você vinculou é um método de extensão para a ContentManagerclasse. Então você usaria como Content.LoadContent<Texture2D>("myFolder"). A Contentpropriedade on Gameé simplesmente uma instância da ContentManagerclasse - você pode usar qualquer instância que desejar. (Nada sobre esta mudou entre as versões XNA.)
Andrew Russell
@ Andrew Obrigado! Eu apaguei minha nota falsa e sem sentido.
Anko
0

Você pode facilmente listar todos os arquivos dentro de uma pasta e carregá-los um por um. Por padrão, todos os arquivos de conteúdo são armazenados em uma pasta ao lado do aplicativo principal, portanto, você só precisa verificar o conteúdo dessa direção. Você também pode usar uma função recursiva se desejar carregar todos os arquivos de todos os diretórios. aqui está uma pequena amostra:

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

observe que, quando você estiver solicitando que o sistema de conteúdo carregue uma textura, solte a pasta "content" do nome do arquivo.

Ali1S232
fonte