Ciao a tutti. Ho impostato un progetto Game di Xna in cui, fra le altre cose, mi servo di un array di VertexPositionColor, un array di interi ed una struttura che ha per campi un array di VertexPositionColorTexture, un array di int ed una texture.
Ho scritto una sub che imposta l'array verticescodice:public class Game1 : Microsoft.Xna.Framework.Game { ... VertexPositionColor[] vertices = new VertexPositionColor[8]; #if CPU16 System.Int16[] indices = new System.Int16[36]; #elif CPU32 int[] indices = new int[36]; #endif float Lx = 10f, Ly = 7f, Lz = 5f; SolidFace face0, face1, face2, face3, face4, face5; Texture2D facetex0, facetex1, facetex2, facetex3, facetex4, facetex5; ... public struct SolidFace { //Vertici della parete (4). public VertexPositionColorTexture[] fvertices; //Indici da usare per disegnare i triangoli (6). #if CPU16 public System.Int16[] findices; #elif CPU32 public int[] findices; #endif //Immagine da applicare a questa parete public Texture2D ftexture; }
ed un'altra che imposta 6 oggetti SolidFacecodice:public void Set_Vertices() { vertices[0].Position = new Vector3(-Lx / 2, -Ly / 2, Lz / 2); vertices[0].Color = Color.White; vertices[1].Position = new Vector3(-Lx / 2, -Ly / 2, -Lz / 2); vertices[1].Color = Color.White; vertices[2].Position = new Vector3(Lx / 2, -Ly / 2, -Lz / 2); vertices[2].Color = Color.White; vertices[3].Position = new Vector3(Lx / 2, -Ly / 2, Lz / 2); vertices[3].Color = Color.White; vertices[4].Position = new Vector3(-Lx / 2, Ly / 2, Lz / 2); vertices[4].Color = Color.White; vertices[5].Position = new Vector3(-Lx / 2, Ly / 2, -Lz / 2); vertices[5].Color = Color.White; vertices[6].Position = new Vector3(Lx / 2, Ly / 2, -Lz / 2); vertices[6].Color = Color.White; vertices[7].Position = new Vector3(Lx / 2, Ly / 2, Lz / 2); vertices[7].Color = Color.White; }
Ecco il problema nasce quando nella sub Initialize() viene chiamata Set_Faces. Viene sollevata una NullReference Exception ma non capisco dove. Mi potete aiutare? Graziecodice:public void Set_Faces() { face0 = new SolidFace(); face1 = new SolidFace(); face2 = new SolidFace(); face3 = new SolidFace(); face4 = new SolidFace(); face5 = new SolidFace(); //FACCIA 0: //posizioni e colori face0.fvertices[0].Position = vertices[4].Position; <====== !Riferimento a un oggetto non impostato su un'istanza di oggetto!. face0.fvertices[1].Position = vertices[5].Position; face0.fvertices[2].Position = vertices[6].Position; face0.fvertices[3].Position = vertices[7].Position; face0.fvertices[0].Color = vertices[4].Color; face0.fvertices[1].Color = vertices[5].Color; face0.fvertices[2].Color = vertices[6].Color; face0.fvertices[3].Color = vertices[7].Color; //Coordinate texture face0.fvertices[0].TextureCoordinate = new Vector2(0f, 0f); face0.fvertices[1].TextureCoordinate = new Vector2(1f, 0f); face0.fvertices[2].TextureCoordinate = new Vector2(1f, 1f); face0.fvertices[3].TextureCoordinate = new Vector2(0f, 1f); //Indici delle 2 primitive: usiamo 4-5-6 e 4-6-7 face0.findices[0] = 4; face0.findices[1] = 5; face0.findices[2] = 6; face0.findices[3] = 4; face0.findices[4] = 6; face0.findices[5] = 7; //texture face0.ftexture = facetex0; ... (le altre 5 facce) } ... protected override void Initialize() { Set_Vertices(); Set_Faces(); <----- si blocca qui ... }

Rispondi quotando
