【发布时间】: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,但我看不出有什么不同。