2013-04-10 115 views
0

到目前爲止,這是我的第一個XNA遊戲,我在嘗試學習這個時遇到了麻煩。 我正在關注來自微軟的教程,在這裏找到:XNA Xbox Live Indie GamesXNA中的Draw()方法在for循環中停止工作

現在又一次,代碼斷裂。無可否認,我已經採取了一些我認爲不需要的東西,而且我已經創建了兩個敵對階級,而不僅僅是一個,但我認爲我沒有通過調整來觸發任何重大錯誤。

在Game1.cs主文件中的Draw()方法中,我必須包含一個for循環,它將遍歷可用敵人列表並在更新時繪製它們。但是,代碼行標記爲不正確,我完全不知道爲什麼。我遵循教程,它看起來應該工作,但它不。下面是整個Draw()方法:

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

     backRect.Width = 800; 
     backRect.Height = 480; 

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

     spriteBatch.Draw(backgroundTexture, backRect, Color.White); 

     // Draw the Player 
     player.Draw(spriteBatch); 

     for (int i = 0; i < goblins.Count; i++) 
     { 
      goblins[i].Draw(spriteBatch); 
     } 


     // Stop drawing 
     spriteBatch.End(); 

     base.Draw(gameTime); 
    } 

這是for循環中的代碼不起作用。任何想法如何解決它和/或任何更好的教程建議?

+0

你正在得到什麼確切的錯誤? – Cemafor 2013-04-10 19:03:02

+0

方法'Draw'沒有超載需要1個參數 – 2013-04-10 19:25:08

+1

看起來你錯過了你的敵人類中的'public void Draw(SpriteBatch spriteBatch)'聲明。 – Cemafor 2013-04-10 20:24:42

回答

0

您總是需要在精靈批次中調用SpriteBatch.Begin()SpriteBatch.End()。我不確定如何混合它們,但儘量避免它,並儘可能少地使用spritebatches。

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

    backRect.Width = 800; 
    backRect.Height = 480; 

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

    spriteBatch.Draw(backgroundTexture, backRect, Color.White); 

    // Draw the Player 
    spriteBatch.Draw(playerTexture, playerRect, Color.White); 

    for (int i = 0; i < goblins.Count; i++) 
    { 
     spriteBatch.Draw(goblins[i].Texture, goblins[i].Rect, Color.White); 
    } 


    // Stop drawing 
    spriteBatch.End(); 

    base.Draw(gameTime); 
} 

查看here的文檔。

+0

感謝您的推薦,代碼似乎喜歡那樣。再也沒有錯誤了(我必須在Goblin類中增加一個Rectangle變量),但仍然沒有敵人出現......你知道XNA遊戲製作的好教程嗎?這似乎只是給我造成麻煩,我只是不知道爲什麼。 – 2013-04-10 19:23:29

+0

[MSDN](http://msdn.microsoft.com/zh-cn/library/bb200104.aspx)爲您提供了很多幫助。 – 2013-04-10 19:25:00