XTiled in MonoGame - 在MonoGame中导入TMX地图

时间:2013-05-19 22:43:27

标签: map monogame tmx

我在Tiled地图编辑器中创建了TMX地图,我使用XTiled在MonoGame中加载地图。在xna项目中,地图加载perfeclty,但在MonoGame中不能。我使用xna项目(在内容项目中)构建.tmx文件,而不是在我的monogame项目中构建,如.xnb文件,并设置了所有引用。构建成功但地图无法加载。

如果有人能告诉我在Monogame中加载TMX地图的步骤或者为我提供一些教程,我将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

无论如何,我可以向您保证可以在MonoGame中使用xTile加载Tiled地图。我为我们的一个名为Rock Run的游戏做了这个。

诀窍是使用MonoGame依赖项重新编译xTile。以下是我们的级别加载代码片段,可能有所帮助:

string levelPath = string.Format (@"Content\level{0:00}.tbin", level);
var stream = TitleContainer.OpenStream(levelPath);
_map = xTile.Format.FormatManager.Instance.BinaryFormat.Load(stream);

_mapDisplayDevice = new XnaDisplayDevice(Content, GraphicsDevice, ScreenScale);
_map.LoadTileSheets(_mapDisplayDevice);

var viewportSize = new xTile.Dimensions.Size(ScreenWidth, ScreenHeight);
_viewportRectangle = new xTile.Dimensions.Rectangle(viewportSize);

这里有几点需要注意。我们没有先打算将内容预先编译为XNB文件。它们只是从地图编辑器导出为二进制(tbin)文件并添加为直接内容。虽然,我认为这不是你的问题,但是从内存中我们不得不做一些小改动才能让它以这种方式工作。因此,使用XNB文件也应该可以正常工作。

其次,我们使用TitleContainer将文件作为流读取,因为在Android设备上,文件存储在独立存储中,而您无法通过典型的文件系统操作找到它们。

如果你遵循the tutorial,那么其他一切都应该是非常自我解释的。