LibGdx 解析文件时出错
LibGdx Error parsing file
我最近通过 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.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" 和图块集 "tmw_desert_spacing.png" 放入 Android 和桌面的资产文件夹中。当我 运行 桌面启动器时,我收到这些错误。
在你的:
平铺地图 = 新 Tmxblabla.load(assets/Desert.tmx)
您不应该在此处加载名为 Tiled 的文件吗?
否则我认为您不需要引用此文件,因为您的代码中未调用它。
嗯,我解决了这个问题。我所要做的就是用 Tiled 重新制作一张地图并使用一个全新的图块集,当我加载这两个文件后它终于起作用了。
如果打开地图.tmx文件
然后你得到标签 tileset firstgid="1" source="grass_and_water3.tsx"
它指向 tileset .tsx 文件,甚至 .tsx 文件指向组合的图块图像,即 .png 文件
为了解决这个问题,只需将所有文件保存在同一位置,即在 asset/ 下,并在所有文件(.tmx、.tsx 等)中提供相同的路径
我最近通过 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.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" 和图块集 "tmw_desert_spacing.png" 放入 Android 和桌面的资产文件夹中。当我 运行 桌面启动器时,我收到这些错误。
在你的: 平铺地图 = 新 Tmxblabla.load(assets/Desert.tmx) 您不应该在此处加载名为 Tiled 的文件吗? 否则我认为您不需要引用此文件,因为您的代码中未调用它。
嗯,我解决了这个问题。我所要做的就是用 Tiled 重新制作一张地图并使用一个全新的图块集,当我加载这两个文件后它终于起作用了。
如果打开地图.tmx文件
然后你得到标签 tileset firstgid="1" source="grass_and_water3.tsx"
它指向 tileset .tsx 文件,甚至 .tsx 文件指向组合的图块图像,即 .png 文件
为了解决这个问题,只需将所有文件保存在同一位置,即在 asset/ 下,并在所有文件(.tmx、.tsx 等)中提供相同的路径