0

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

时不时地,代码会中断。诚然,我已经删除了一些我认为我不需要的部分,并且我创建了两个敌人类别,而不仅仅是一个,但我认为我的调整没有遇到任何重大故障。

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

4

2 回答 2

0

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

它让我开始得很好。

于 2013-04-10T19:59:53.587 回答
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);
}

有关文档,请参见此处

于 2013-04-10T19:06:47.360 回答