2011-12-28 125 views
1

任何人都可以製作和編譯這個程序(Click here))直到第一個「快速構建」。?(直到他們說「這將是一個偉大的時間來做一個!快建「)XNA Windows遊戲(4.0)ContentLoadException

出於某種原因,我不斷收到此異常

我檢查這個#1方案中提到的一切:Click Here但沒有它解決了我的問題:(

我的形象是放置在「內容」區域中,它不位於文件夾中。

請幫忙!

這裏是我的代碼如下所示:

namespace myGame 
{ 

    public class Game1 : Microsoft.Xna.Framework.Game 
    { 
     GraphicsDeviceManager graphics; 
     SpriteBatch spriteBatch; 

     SpriteBatch mBatch; 
     Texture2D mHealthBar; 

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





     protected override void Initialize() 
     { 
      // TODO: Add your initialization logic here 

      base.Initialize(); 
     } 





     protected override void LoadContent() 
     { 

      spriteBatch = new SpriteBatch(GraphicsDevice); 

      // TODO: use this.Content to load your game content here 
      mBatch = new SpriteBatch(this.graphics.GraphicsDevice); 
      ContentManager aLoader = new ContentManager(this.Services); 

      **//ERROR occurs here!** 
      mHealthBar = aLoader.Load<Texture2D>("HealthBar") as Texture2D; 
     } 




     protected override void UnloadContent() 
     { 
      // TODO: Unload any non ContentManager content here 
     } 




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





     protected override void Draw(GameTime gameTime) 
     { 
      GraphicsDevice.Clear(Color.CornflowerBlue); 

      // TODO: Add your drawing code here 
      mBatch.Begin(); 
      mBatch.Draw(mHealthBar, new Rectangle(this.Window.ClientBounds.Width/2 - mHealthBar.Width/2, 

       30, mHealthBar.Width, 44), new Rectangle(0, 45, mHealthBar.Width, 44), Color.Red); 


      //Draw the box around the health bar 
      mBatch.Draw(mHealthBar, new Rectangle(this.Window.ClientBounds.Width/2 - mHealthBar.Width/2, 
        30, mHealthBar.Width, 44), new Rectangle(0, 0, mHealthBar.Width, 44), Color.White); 
      mBatch.End(); 
      base.Draw(gameTime); 
     } 
    } 
} 
+0

您的問題*可能是您正在創建自己的ContentManager。嘗試使用:this.Content.Load (「HealthBar」) – GGulati 2011-12-28 01:45:30

+0

我試過這樣做,但它沒有解決問題....感謝反正 – BigBug 2011-12-28 04:03:34

+0

如果您使用自己的ContentManager,您必須將RootDirectory屬性設置爲「內容「,或者如果你有不同的文件夾,那麼你可以將其設置爲。 – annonymously 2011-12-28 05:06:10

回答

1

如果您正確地按照教程進行操作,您已將圖像添加到遊戲項目而不是內容項目。這是一個大大過時的教程(1.0與當前的4.0)的結果

右鍵單擊內容項目,添加現有文件並添加圖像。

作爲一個方面說明,我HIGHLY建議你文件>新建並做教程在http://www.riemers.net/ 有太多的密碼破譯的變化,從1.0到4.0,甚至試圖做一個1.0教程。

+0

你好,不,我已經將它添加到內容項目,而不是遊戲項目......謝謝無論如何.. – BigBug 2011-12-30 06:39:33

+0

此外,感謝您的鏈接。我會確保檢查出來.. – BigBug 2011-12-30 06:40:20

0

如果你想使用自己的內容管理器的目錄,你需要創建一個內容項目,並設置其根目錄中,以任何你想要的屬性,從VS.這會將編譯資產的目標目錄從默認內容更改爲您選擇的任何內容。您也可以直接在默認的內容項目中設置此值。

然後,在實例化自己的時候,指定根目錄並像平常一樣加載資源,並使用相對路徑。它會在你選擇的根目錄中查找它們。

+0

感謝您的回覆,並不是我一直在尋找的東西。但是,無論如何感謝 – BigBug 2011-12-31 07:59:34