我最近通过Android Studio开始了一个新的游戏项目,并在名为Tiled的软件中制作了一个tilemap。但是我一直收到这个错误:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error parsing file: assets/Desert.tmx
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:83)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:77)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:65)
at com.poptag.game.PopTag.create(PopTag.java:29)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: assets\Desert.tmx (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
at com.badlogic.gdx.files.FileHandle.reader(FileHandle.java:163)
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:81)
... 5 more
这是加载和呈现它的代码:
@Override
public void create () {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera();
camera.setToOrtho(false,w,h);
camera.update();
tiledMap = new TmxMapLoader().load("assets/Desert.tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap);
Gdx.input.setInputProcessor(this);
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
tiledMapRenderer.setView(camera);
tiledMapRenderer.render();
}
我已将地图“Desert.tmx”和tileset“tmw_desert_spacing.png”放入Android和桌面的资源文件夹中。当我为桌面运行启动器时,我收到这些错误。
答案 0 :(得分:2)
好吧,我解决了这个问题。我所要做的只是用Tiled重新制作地图并使用一个全新的tileset,一旦我加载了两个文件,它终于工作了。
答案 1 :(得分:0)
在你的: tiledMap = new Tmxblabla.load(assets / Desert.tmx) 你不能在这里加载名为Tiled的文件吗? 否则,我认为你不需要引用这个文件,因为你的代码中没有调用它。
答案 2 :(得分:0)
如果您打开地图 .tmx 文件
那么您会得到标签tileset firstgid="1" source="grass_and_water3.tsx"
指向图块集 .tsx 文件,甚至指向组合图块图像的 .tsx 文件,即.png文件
要解决此问题,只需将所有文件放在相同的位置,即asset /下,并在所有文件(.tmx,.tsx等)中提供相同的路径