Java 平铺贴图编辑器导出Libgdx
我在导出平铺贴图文件时遇到问题。 我创建了地图,并推荐了一个教程,我导出了tmx文件并将其导入到Eclipse项目资产中。 在代码中,我这样做:Java 平铺贴图编辑器导出Libgdx,java,exception,libgdx,Java,Exception,Libgdx,我在导出平铺贴图文件时遇到问题。 我创建了地图,并推荐了一个教程,我导出了tmx文件并将其导入到Eclipse项目资产中。 在代码中,我这样做: tiledMap = new TmxMapLoader().load("map.tmx"); tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap); 我的问题是,当我执行它时,我得到: Exception in thread "LWJGL Application" com.badlog
tiledMap = new TmxMapLoader().load("map.tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap);
我的问题是,当我执行它时,我得到:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: tileset 2/grass-tiles-2-small.png
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
at com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:121)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:96)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:116)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:101)
at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:43)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: tileset 2/grass-tiles-2-small.png (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:220)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
线程“LWJGL应用程序”com.badlogic.gdx.utils.GdxRuntimeException中的异常:无法加载文件:tileset 2/grass-tiles-2-small.png
在com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:140)
在com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)上
位于com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
位于com.badlogic.gdx.graphics.Texture.(Texture.java:121)
位于com.badlogic.gdx.graphics.Texture.(Texture.java:100)
位于com.badlogic.gdx.graphics.Texture.(Texture.java:96)
位于com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:116)
位于com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:101)
在com.mygdx.game.MyGdxGame.create上(MyGdxGame.java:43)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
原因:com.badlogic.gdx.utils.GdxRuntimeException:未找到文件:tileset 2/grass-tiles-2-small.png(内部)
位于com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
位于com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:220)
位于com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:137)
我该如何修复它?正如我在libgdxwiki中看到的,有两个选项可以加载tmx文件。确保您的文件位于“资产”文件夹下。你可以从中看到。在中也有类似的问题。平铺正在
.tmx
文件中引用其平铺集图像源。因此,您使用的tilesetgrass-tiles-2-small.png
是未嵌入的,并且也必须加载。幸运的是,这是通过为您解析映像依赖项自动完成的
因此,除了map.tmx
之外,您还必须通过将所有使用过的图像文件复制到您的资产文件夹中来确保可以访问它们。它必须是这样的:assets/tileset 2/grass-tiles-2-small.png
。在这样做之后刷新Eclipse项目,以防它没有注意到
如果您已经这样做了,那么问题的另一个根源可能是目录名中的空白。尝试将
tileset 2
重命名为tileset_2
并创建一个新的.tmx
文件。它只是无法加载纹理grass-tiles-2-small.png
。我通常打开TMX/XML
文件,并手动将tilesheet的文件名设置为仅包含文件名,而不包含路径
例如:
TMX只是在同一个文件夹中查找要使用的正确纹理,因为我们没有在TMX/xml中指定路径
想法:
我真的很讨厌
LibGDX
defaultTmxLoader
。这将适用于非常简单的事情,但当精灵重叠时,您无法对深度进行排序,因为绘制的唯一方法是立即绘制一个完整的层。如果您需要在播放器上进行重叠,则需要能够逐个平铺/对象逐个对象绘制平铺。我为平铺贴图编写了自己的XML
解析器,它的简单程度让我吃惊。我有一个相当复杂的映射,只需要大约30行代码就可以将所有内容加载到一个数组中,准备在LibGDX
“无法加载文件”,所以首先要检查的是该文件是否位于代码所期望的位置。我无法确定找不到哪个文件。在项目中,我插入了tmx文件,没有其他内容。你不能吗?第一行提到的那一个呢?我的意思不是说我不知道是哪个文件,而是我不知道从哪里得到这个文件。我只导出tmx文件,但该文件丢失了,我不知道它是什么
<tileset firstgid="1" name="grass" tilewidth="32" tileheight="32">
<image source="grass-tiles-2-small.png" width="256" height="256"/>
</tileset>
tiledMap = new TmxMapLoader().load(Gdx.files.internal("yourmap.tmx"));