我在 Tiled 地图编辑器中创建了 TMX 地图,并使用 XTiled 在 MonoGame 中加载地图。在 xna 项目中,地图加载完美,但在 MonoGame 中不能。我使用 xna 项目(在内容项目中)构建 .tmx 文件,而不是在我的 monogame 项目中构建所有引用集的 .xnb 文件。构建成功,但地图无法加载。
如果有人能告诉我在 Monogame 中加载 TMX 地图的步骤或为我提供一些教程来执行此操作,我将不胜感激。
提前致谢。
无论如何,我可以向您保证,可以在 MonoGame 中使用 xTile 加载平铺地图。我是为我们的一款名为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 设备上,文件存储在隔离存储中,您无法通过典型的文件系统操作找到它们。
如果您按照教程进行操作,其他所有内容都应该很容易解释。