我有等距瓷砖游戏引擎(钻石地图样式),我需要对我绘制的对象进行排序。我的对象是1x1,2x1,4x2。我怎么能根据这段代码来做呢?
for (int osaY = 0; osaY < mapSize; osaY++)
{
for (int osaX = 0; osaX < mapSize; osaX++)
{
int x = osaX * 32;
int y = osaY * 32;
PlaceObject(thisObject, CartToIso(new Vector2(x, y)), new Vector2(osaX, osaY));
}
}
答案 0 :(得分:0)
我如何解决排序:
1.创建IDisplay界面并将其添加到处理显示Draw(SpriteBatch batch)
的每个类中
2.创建DisplayManager
,其中包含Add
,Remove
,Draw
方法和layers
(IDisplay对象列表)如你所愿。就个人而言,中间层是我对我的东西进行排序的层。所以我可以把东西放在排序对象后面,然后排序对象
3.在处理绘图的Main
类中,调用DisplayManager's Draw
函数,该函数将运行layers
(列表)和IDisplay
项并调用{{1每个项目的功能。
Draw
然后在DisplayManager中:
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
DisplayManager.Draw(spriteBatch);
spriteBatch.End();