【问题标题】:Xna spriteBatch in different classXna spriteBatch 在不同的类
【发布时间】:2013-05-02 06:41:50
【问题描述】:

我已经准备好撕掉我的头发了,因为 spriteBatch() 并没有和我一起“点击”。我似乎无法在网上找到任何可以涵盖我在这种确切情况下使用它的东西,这让我相信我错过了一些非常简单的东西。

我在我的 XNA 项目中有一个名为 player 的类,令人惊讶的是,它可以控制播放器、物理等。但我一步一步来。第一步:在关卡中绘制玩家。关卡代码效果很好,不用担心。但我无法让玩家画画。

我有一个基本的 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。

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

【问题讨论】:

  • 此代码是 Player.cs 的一部分,是项目中自己的文件。
  • 由于这个确切的问题,您的抽奖代码不应该在您的播放器类中。所有渲染代码都应该包含为此目的而设计的类。这个类应该只有一个实例和一个对必要对象的引用,例如 this.GraphicsDevice。

标签: c# xna texture2d spritebatch


【解决方案1】:

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

player = new Player(graphicsDevice, spriteBatch );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多