LibGDX 正在导入 TMX 文件

LibGDX importing TMX files

我一直在 java 和 libgdx 学习编写游戏代码。在我尝试过的任何语言中,我最讨厌的部分是关卡编辑器(.TMX,平铺)解析。 libgdx 的 Github 说有一个有用的 class 为此制作的,我一直试图按照说明进行操作,但我卡住了。

基本上,如果我注释掉以下代码行,应用程序运行良好,但当然不包含任何关卡元素。当我在代码中加入这一行时,它会在加载应用程序时立即使我的 phone 崩溃:

TiledMap map

public Level(OrthographicCamera camera) {
    map = new TmxMapLoader().load("level1.tmx"); /// THIS LINE CRASHES IT
}

我已经检查过文件 'level1.tmx' 肯定存在于我的 'assets' 文件夹中,位于游戏层次结构的 Android 文件夹中。

如果您确实需要我的其余代码,我很乐意提供,但其中有很多与问题无关的垃圾。感谢您的帮助

编辑:我认为可能是我在 Tiled Editor 中制作的文件类型。 (即我选择了 zlib 压缩)其他选项是 XML CSV,我认为是 gzip

您不必自己加载纹理。加载程序将为您加载所有引用的纹理,但您必须将它们放在资产文件夹中与使用 TilEd 创建地图时使用的相同位置。因为你没有做对,你得到了例外。

执行此操作的一个好方法是在 assets 目录中创建一个文件夹 levels 和一个文件夹 textures。将您的 .tmx 文件放在 levels 中,将 tilesets 放在 textures 中。现在,当您从 TilEd 导入图块集时,它将被引用为 ../textures/tileset.png。为确保这是正确的,您可以检查 .tmx 文件。不要使用绝对文件路径!

如果您的错误是 "unable to load file "..tiles-brown.png" 然后转到 windows 中存储 .tmx 地图的文件夹。右键单击并在记事本中打开。在那里你会看到文件顶部使用的每个资产的参考路径。确保资产存在于项目的指定路径中。如果它不存在或不同,请将其更改为存储资产的位置对于这张地图。然后保存并刷新 android 项目。这应该可以解决问题。