Csharp/C#教程:Xna绘制订单无法正常工作分享


Xna绘制订单无法正常工作

我有一个2d的Texture2D数组,它在这个数组中保存了地图的不同部分。 我有一个问题,当我运行游戏时,地图绘制正确但由于某种原因,数组[0,0]纹理重叠我的所有纹理,包括我的播放器纹理和鼠标纹理。 每个其他纹理都有效,因为我的鼠标和播放器纹理正确地重叠了地图。

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

这是我的地图绘制方法,我在Game的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() 

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

您可以尝试使用深度重载的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)

PS对不起谷歌翻译

oops …我没有在回复之前更新评论

上述就是C#学习教程:Xna绘制订单无法正常工作分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

www.ctvol.com true Article Csharp/C#教程:Xna绘制订单无法正常工作分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/936408.html

(0)
上一篇 2021年11月7日 上午3:07
下一篇 2021年11月7日 上午3:10

精彩推荐