2012-05-28 2 views
1
using System; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.GamerServices; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Input; 
using Microsoft.Xna.Framework.Media; 

namespace Project 
{ 
    /// <summary> 
    /// This is the main type for your game 
    /// </summary> 
    public class Game1 : Microsoft.Xna.Framework.Game 
    { 
     GraphicsDeviceManager graphics; 
     SpriteBatch spriteBatch; 
     Texture2D myTexture; 
     Rectangle myRectangle; 

     public Game1() 
     { 
      graphics = new GraphicsDeviceManager(this); 
      Content.RootDirectory = "Content"; 
     } 

     /// <summary> 
     /// Allows the game to perform any initialization it needs to before starting to run. 
     /// This is where it can query for any required services and load any non-graphic 
     /// related content. Calling base.Initialize will enumerate through any components 
     /// and initialize them as well. 
     /// </summary> 
     protected override void Initialize() 
     { 
      // TODO: Add your initialization logic here 

      base.Initialize(); 
     } 

     /// <summary> 
     /// LoadContent will be called once per game and is the place to load 
     /// all of your content. 
     /// </summary> 
     protected override void LoadContent() 

     { 


      // Create a new SpriteBatch, which can be used to draw textures. 
      //spriteBatch = new SpriteBatch(GraphicsDevice); 

      Texture myTexture = Content.Load<Texture2D>("character"); 

      myRectangle = new Rectangle(10, 100, 30, 50); 
      // TODO: use this.Content to load your game content here 
     } 

     /// <summary> 
     /// UnloadContent will be called once per game and is the place to unload 
     /// all content. 
     /// </summary> 
     protected override void UnloadContent() 
     { 
      // TODO: Unload any non ContentManager content here 
     } 

     /// <summary> 
     /// Allows the game to run logic such as updating the world, 
     /// checking for collisions, gathering input, and playing audio. 
     /// </summary> 
     /// <param name="gameTime">Provides a snapshot of timing values.</param> 
     protected override void Update(GameTime gameTime) 
     { 
      // Allows the game to exit 
      if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 
       this.Exit(); 

      // TODO: Add your update logic here 

      base.Update(gameTime); 
     } 

     /// <summary> 
     /// This is called when the game should draw itself. 
     /// </summary> 
     /// <param name="gameTime">Provides a snapshot of timing values.</param> 
     protected override void Draw(GameTime gameTime) 
     { 
      GraphicsDevice.Clear(Color.Black); 

      // TODO: Add your drawing code here 
      spriteBatch.Begin(); 

      spriteBatch.Draw(myTexture,myRectangle,Color.White); 

      spriteBatch.End(); 

      base.Draw(gameTime); 
     } 
    } 
} 

NullReferenceExcerption 디버깅이 시작됩니다이 코드에서 처리되지 않은했지만 그것은 개체의 인스턴스로 설정되지 않았습니다이C#의 XNA 프로그래밍의 SpriteBatch 오류

개체 참조 같은 오류 메시지가 표시됩니다. 은 spriteBatch.begin() 을 가리키며 너무 많은 링크 등이 포함되어 있습니다.

답변

5

이 행은 주석 처리되었으므로 spriteBatch가 초기화되지 않습니다.

//spriteBatch = new SpriteBatch(GraphicsDevice); 
+0

새로운 오류 !!!!! 이 메서드는이 매개 변수에 대해 null을 허용하지 않습니다. 매개 변수 이름 : 텍스처가 ' spriteBatch.Draw (myTexture, myRectangle, Color.White);에 있습니다. – gokul

+0

로컬로로드 된 별도의 변수에 myTexture를로드했기 때문에 LoadContent 메소드로 범위를 변경하고'myTexture = Content.Load ("character"); – MattDavey