我已经在Tiled地图编辑器中创建了TMX地图,我使用XTiled在MonoGame中加载地图。在xna项目中,地图加载非常完美,但在《一夫一妻》中却不能。我用xna项目构建.tmx文件(在内容项目中),而不是在我的monogame项目中构建.xnb文件,并设置所有引用。构建成功,但无法加载地图。
如果有人能告诉我在一夫一妻制中加载TMX地图的步骤或为我提供一些教程,我将不胜感激。
无论如何,我可以向你保证,在MonoGame中使用xTile加载平铺地图是可能的。我是为我们的一款游戏《Rock Run》做的。
技巧是用MonoGame依赖项重新编译xTile。以下是我们关卡加载代码的片段,可能会有所帮助:
string levelPath = string.Format (@"Contentlevel{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设备上,文件存储在独立的存储中,您无法使用典型的文件系统操作找到它们。
如果您遵循了本教程,那么其他内容应该是不言自明的。