2013-04-10 83 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