XNA中的Draw()方法停止在for循环中工作

时间:2013-04-10 18:58:16

标签: c# loops xna draw spritebatch

到目前为止,这是我的第一个XNA游戏,我在尝试学习这个问题时遇到了麻烦。 我正在关注Microsoft的教程,可在此处找到:XNA Xbox Live Indie Games

每次都会出现代码中断。不可否认,我已经考虑了一些我认为不需要的东西,而且我已经创建了两个敌人类而不仅仅是一个,但我不认为我的调整会出现任何重大缺陷。< / p>

在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循环中的代码不起作用。任何想法如何解决它和/或任何建议更好的教程?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我非常喜欢这个教程: http://xbox.create.msdn.com/en-US/education/tutorial/2dgame/getting_started

这让我开始很好。