到目前为止,这是我的第一个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循环中的代码不起作用。任何想法如何解决它和/或任何建议更好的教程?
答案 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
这让我开始很好。