XNA: almacenar muchas texturas 2D en una matriz

Estoy empezando con xna, soy bastante novato con esto, pero estoy haciendo mis esfuerzos para continuar con este marco, de todos modos, mi problema es que tengo muchas imágenes .png y no quiero hacer un objeto. para cualquiera de esas imágenes, así que quiero ponerlas en un Texture2D array, pensé que esta es la forma de hacerlo, pero parece que no es la forma correcta:

Texture2D[] _rCards, _bCards, _sCards;
_bCards = new Texture2D[9]; 
_rCards = new Texture2D[9];
_sCards = new Texture2D[6];

for (int i = 1; i < 10; i++)
{
    _bCards[i] = Content.Load<Texture2D>("Images/Common/Black/"+i);
    _rCards[i] = Content.Load<Texture2D>("Images/Common/Red/"+i);
    if(i<6)
        _sCards[i] = Content.Load<Texture2D>("Images/Special/Card" + (i-1));
}

Los nombres de archivo para la textura son 1.png, 2.png, 3.png, etc.

Las cartas especiales son card1.png, card2.png,card3.png y así sucesivamente.

Estoy tratando de hacer un juego de blackjack.

¿Me puede dar un consejo para cargar todas estas texturas en una sola matriz de texturas 2D?

El IDE da un problema NULLREFERENCEEXCEPTION o algo así.

Tal vez el idioma no entienda la dirección completa para encontrar las texturas como una cadena.

preguntado el 22 de mayo de 12 a las 16:05

¿Dónde se lanza la NullReferenceException? ¿Qué objeto es nulo? Ya que está intentando cargar archivos PNG, ¿intentó agregar +".png" a sus cadenas? -

No estoy seguro de si se trata de copiar y pegar, pero en los índices de matriz de C# comienzan en 0 y van a Longitud-1. Usted indexa en _bCards y _rCards alcanzará una Excepción fuera o de rango cuando i == 9. -

1 Respuestas

Los índices están basados ​​en 0...

for (int i = 1; i < 10; i++)
{
  _bCards[i-1] = Content.Load("Images/Common/Black/"+i);
  _rCards[i-1] = Content.Load("Images/Common/Red/"+i);
   if(i<6) _sCards[i-1] = Content.Load("Images/Special/Card" + (i-1));
}

si desea cargar todas las texturas al mismo tiempo, puede usar la muestra de la hoja de sprites:

http://create.msdn.com/en-US/education/catalog/sample/sprite_sheet

Tendrás un activo único y un diccionario de rectángulos fuente para dibujar los sprites...

contestado el 22 de mayo de 12 a las 19:05

Pero habría cambiado los índices en el ciclo for y simplemente habría escrito +(i+1) en los nombres de las texturas - Elideb

yo también, pero me dio flojera, de esta forma solo necesitaba tres cambios, ;P... en serio, es la forma más cercana al código original.... - Azul

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.