C# Xna spriteBatch在不同级别

C# Xna spriteBatch在不同级别,c#,xna,texture2d,spritebatch,C#,Xna,Texture2d,Spritebatch,我正准备把头发撕下来,因为spriteBatch()对我来说并不是“咔哒”一声。我在网上找不到任何关于我在这种情况下使用它的信息,这让我相信我遗漏了一些非常简单的东西 在我的XNA项目中,我有一个名为player的类,令人惊讶的是,它控制着播放器、物理等等,但我一步一步地做。第一步:在关卡中画出玩家。级别代码非常有效,不用担心。但我不能让球员抽签 我有一个基本的Texutre2D纹理,我画了一个精灵。根据教程,我应该能够做到以下几点: public void LoadContent()

我正准备把头发撕下来,因为spriteBatch()对我来说并不是“咔哒”一声。我在网上找不到任何关于我在这种情况下使用它的信息,这让我相信我遗漏了一些非常简单的东西

在我的XNA项目中,我有一个名为player的类,令人惊讶的是,它控制着播放器、物理等等,但我一步一步地做。第一步:在关卡中画出玩家。级别代码非常有效,不用担心。但我不能让球员抽签

我有一个基本的Texutre2D纹理,我画了一个精灵。根据教程,我应该能够做到以下几点:

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();

    }
public void LoadContent()
{
spriteBatch=新spriteBatch(图形设备);
playerSprite=Level.Content.Load(“玩家/玩家”);
}
公众抽签()
{
图形.图形设备.透明(颜色.米色);
//画精灵。
spriteBatch.Begin(SpriteSortMode.BackToFront,BlendState.AlphaBlend);
spriteBatch.Draw(玩家的prite、位置、颜色、白色);
spriteBatch.End();
}
而且它应该会起作用。但是没有。我在这个球员级别上错过了一些东西。1) 在LoadContent()中,我无法创建
新的SpriteBatch()
,因为
图形设备不存在并且不能创建。它出现在Game.cs中,并用
初始化,表示游戏本身。可以但我也不能参考Game.GraphicsDevice


这基本上就是整个问题,其他一切都源于此。我找不到绕过它的办法。有人知道怎样做吗?我似乎无法准确地找到我所缺少的东西来让它工作。

解决这一问题的最简单方法是,当您在游戏类中创建GraphicsDevice和SpriteBatch时,在构造函数中传递它的实例

player = new Player(graphicsDevice, spriteBatch );

此代码是Player.cs的一部分,它在项目中是自己的文件。由于这个问题,您的绘图代码不应该在您的Player类中。所有呈现代码都应该使用为此目的设计的类。此类应该只有一个实例和对必要对象(如This.GraphicsDevice)的引用。