Graphics 是否可以为SpriteBatch.Begin组合多个SpriteSortMode?

Graphics 是否可以为SpriteBatch.Begin组合多个SpriteSortMode?,graphics,windows-phone-7,xna,drawing,sprite,Graphics,Windows Phone 7,Xna,Drawing,Sprite,我想按层深度(即SpriteSortMode.BackToFront)对精灵进行排序,但也要按SpriteSortMode.Immediate(我的理解是最不可能绘制的东西)对精灵进行排序 我想要这种行为的原因是,如果我在同一层深度上绘制两个精灵,最后一个绘制的精灵将被放置在顶部。现在,它只是随机地在顶部渲染什么,不渲染什么(我假设它类似于z战斗) 我试过这个: SpriteBatch.Begin(SpriteSortMode.Immediate|SpriteSortMode.BackToF

我想按层深度(即SpriteSortMode.BackToFront)对精灵进行排序,但也要按SpriteSortMode.Immediate(我的理解是最不可能绘制的东西)对精灵进行排序

我想要这种行为的原因是,如果我在同一层深度上绘制两个精灵,最后一个绘制的精灵将被放置在顶部。现在,它只是随机地在顶部渲染什么,不渲染什么(我假设它类似于z战斗)

我试过这个:

  SpriteBatch.Begin(SpriteSortMode.Immediate|SpriteSortMode.BackToFront, BlendState.AlphaBlend);

但它不起作用…

不是你这样做的
SpriteSortMode
不是一个
[标志]
,因此您不应该这样组合它们

获得所需效果的一个简单方法是为绘制的每个精灵的深度添加一个不太重要的偏移。因此,对于每一张图,你都要写:

spriteBatch.Draw(..., 0.5f + depthOffset);
depthOffset += 0.0001f;
因此,所绘制的深度可能最终如下所示:

0.5f  ->  0.5f
0.5f  ->  0.5001f
0.8f  ->  0.8002f
0.8f  ->  0.8003f
0.6f  ->  0.6004f
0.5f  ->  0.5005f

当这个得到排序时,您将得到一个稳定的排序(即:当输出时,传入的相同值的顺序相同)。请注意,只有当最大增量(即:最终精灵的增量)小于所需深度值的最小差值时,此选项才有效。

我刚才在游戏中遇到了类似的问题。我的回答与安德鲁·拉塞尔的回答相似。我想我有一个smaler偏移量(大约0.0000001f)。我正在开发一个基于平铺的游戏,我为y维中的每个单位添加了一个偏移单位。这样,应该被拉到后面的精灵就被正确地画出来了