0

我即将准备好撕掉我的头发,因为 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();

    }

它应该可以正常工作。但不是。在我的这个玩家类别中,我缺少一些东西。1) 在 LoadContent() 中,我无法创建一个new SpriteBatch(),因为GraphicsDevice不存在也不能随便创建。它出现在 Game.cs 中,并this以游戏本身的含义进行初始化。好的。但我也不能引用 Game.GraphicsDevice。

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

4

1 回答 1

1

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

player = new Player(graphicsDevice, spriteBatch );
于 2013-05-01T22:41:50.970 回答