Cargue todo el contenido de la carpeta


8

Quiero preguntar, ¿hay alguna forma de cargar en xna todo el contenido de la carpeta?
Por ejemplo, en mi contenido tengo:

Images / hero
Images / car
Images / tree


Quiero hacer algo como esto

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

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

Respuestas:


3

Hay una gran página de MSDN sobre un método útil de acceso al directorio y alguien ha hecho una pregunta similar sobre StackOverflow .

Básicamente, encuentre los archivos que están en ese directorio, inicialice una matriz de ese tamaño y luego repita esos archivos, cargando los recursos.


No es estático, pero hay una propiedad Content en la clase Game que se usa comúnmente en XNA.
Michael Coleman

En realidad, la respuesta que vinculó es un método de extensión para la ContentManagerclase. Entonces lo usarías como Content.LoadContent<Texture2D>("myFolder"). La Contentpropiedad en Gamees simplemente una instancia de la ContentManagerclase: puede usar cualquier instancia que desee. (Nada de esto ha cambiado entre versiones de XNA.)
Andrew Russell

@ Andrew ¡Gracias! He eliminado mi nota falsa y sin sentido.
Anko


0

Puede enumerar fácilmente todos los archivos dentro de una carpeta y luego cargarlos uno por uno. Por defecto, todos los archivos de contenido se almacenan en una carpeta justo al lado de su aplicación principal, por lo que solo necesita verificar el contenido de esa dirección. También puede usar una función recursiva si desea cargar todos los archivos de todos los directorios. Aquí hay una pequeña muestra:

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

tenga en cuenta que cuando solicita al sistema de contenido que cargue una textura, debe soltar la carpeta "contenido" del nombre del archivo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.