我准备撕掉我的头发,因为spriteBatch()不是跟我“点击”。在这种情况下,我似乎无法在网上找到任何涵盖我使用它的内容,这让我相信我错过了一些非常简单的东西。
我的XNA项目中有一个叫做播放器的课程,令人惊讶的是,它控制着播放器,物理等等。但我一步一步地做到了。第一步:在关卡中绘制玩家。关卡代码效果很好,不用担心。但我无法让玩家画画。
我有一个基本的Texutre2D纹理,用于绘制我画的精灵。通过this教程,我应该能够做到以下几点:
public void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
playerSprite = Level.Content.Load<Texture2D>("player/pory");
}
public void Draw()
{
graphics.GraphicsDevice.Clear(Color.Beige);
// Draw the sprite.
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
spriteBatch.Draw(playerSprite, Position, Color.White);
spriteBatch.End();
}
它应该可行。但不是。我在这个玩家类中缺少一些东西。 1)在LoadContent()中,我无法创建new SpriteBatch()
,因为GraphicsDevice
不存在且无法创建。它出现在Game.cs中并用this
初始化,意味着游戏本身。好的。但我也不能参考Game.GraphicsDevice。
这基本上就是整个问题,其他一切都源于此。我无法找到解决办法。有谁知道尝试这样做的正确方法?我似乎无法找到我所缺少的东西来让它发挥作用。
答案 0 :(得分:1)
解决这个问题的最简单方法是在Game类中创建GraphicsDevice和SpriteBatch实例时将它传递给构造函数。
player = new Player(graphicsDevice, spriteBatch );