【问题标题】:Xna draw order not working rightXna 绘制顺序无法正常工作
【发布时间】:2013-05-17 21:41:34
【问题描述】:

我有一个 Texture2D 的二维数组,它将地图的不同部分保存在这个数组中。但是我有一个问题,当我运行游戏时,地图绘制正确,但由于某种原因,array[0, 0] 纹理与我的所有纹理重叠,包括我的玩家纹理和鼠标纹理。当我的鼠标和播放器纹理正确地与地图重叠时,所有其他纹理都可以正常工作。

我现在真的很困惑,因为地图纹理是使用嵌套的 for 循环绘制在一起的。

这是我在游戏的 Draw 方法中调用的地图绘制方法:

public void Draw()
{
    // Draws the Map from a 2D Array
    for (int row = 0; row < mapTexture.GetLength(0); row++)
    {
        for (int col = 0; col < mapTexture.GetLength(1); col++)
        {
            spriteBatch.Draw(mapTexture[row, col], mapPosition[row, col], Color.White);
        }//end for
    }//end for
}//end Draw()

我的实际绘制方法:

protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);

    spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
    spriteBatch.Draw(mouseIcon, mouseIconPosition, Color.White);
    player.Draw();
    map.Draw();
    spriteBatch.End();

    base.Draw(gameTime);
}//end Draw()

【问题讨论】:

  • 你在哪里画你的鼠标和播放器?
  • 将其编辑到您的问题中
  • 您确定您的鼠标位于地图其余部分的顶部吗?从您发布的代码来看,它不应该是
  • 是的,它在播放器的顶部,而播放器在地图的顶部。好吧,当然地图的右上角除外。
  • 我也尝试过 FrontToBack,但我看不出有什么不同。

标签: c# xna


【解决方案1】:

尝试颠倒它们的绘制顺序,并使用SpriteSortMode.Deferred

【讨论】:

    【解决方案2】:

    您可以尝试使用具有深度的重载 SpriteBatch.Draw 方法。例如:

    SpriteBatch.Draw (Texture2D, Vector2, Nullable, Color, Single, Vector2, Single, SpriteEffects, Single) 将精灵添加到要渲染的精灵批次中,指定纹理、屏幕位置、可选的源矩形、色调、旋转、原点、比例、效果和排序深度。

    或者可以尝试更改绘图顺序:

    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);
    
        spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
    
        map.Draw();  // first
        player.Draw();  // second
        spriteBatch.Draw(mouseIcon, mouseIconPosition, Color.White); // third
    
        spriteBatch.End();
    
        base.Draw(gameTime);
    }//end Draw()
    

    (用于 SpriteSortMode.Deferred)

    附:抱歉谷歌翻译

    哎呀...在回复之前我没有更新 cmets

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      相关资源
      最近更新 更多