Xna spriteBatch在不同的类中

时间:2013-05-01 21:35:52

标签: c# xna texture2d spritebatch

我准备撕掉我的头发,因为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。

这基本上就是整个问题,其他一切都源于此。我无法找到解决办法。有谁知道尝试这样做的正确方法?我似乎无法找到我所缺少的东西来让它发挥作用。

1 个答案:

答案 0 :(得分:1)

解决这个问题的最简单方法是在Game类中创建GraphicsDevice和SpriteBatch实例时将它传递给构造函数。

player = new Player(graphicsDevice, spriteBatch );