TmxMapLoader使用压缩的tileset

时间:2013-08-23 07:31:07

标签: libgdx texturepacker

在旧的libgdx地图api中,他们曾经拥有

map = TiledLoader.createMap(Gdx.files.internal("maps/testmap.tmx"));
atlas = new TileAtlas(map, Gdx.files.internal("maps"));
tileMapRenderer = new TileMapRenderer(map, atlas, 8, 8); 

然而,在新的libgdx中规则发生变化,加载tilemap不再需要先使用map packer。您可以直接将.tmx文件与tileset png一起使用。像下面这样的东西可以工作,然后调用渲染。

TiledMap map = new TmxMapLoader().load("maps/testmap.tmx");

我的问题是用于生成.tmx文件的原始tileselt.png,它的大小不是2的幂。因此,我仍然需要使用纹理包装器或地图打包器将其打包以供使用。

我无法将打包文件与.tmx;

成功关联

无论如何都要解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:4)

如果你的目标是GLES 1.0,那么你将需要两个二次幂的tileset。某些设备可能允许使用GLES 1.0的非2次幂,但这不能保证。使用GLES 2.0可以解除这个限制,但是你仍然可以通过2次幂获得更好的性能。

您仍然可以使用TiledMapPacker制作的地图,您只需要使用AtlasTmxMapLoader而不是TmxMapLoader加载地图。

答案 1 :(得分:1)

他们不需要两个人的力量。如果您遇到问题,就像在MainClass中获得两个错误集Texture.setEnforcePotImages(false);的强大功能。

您不再需要打包器了,所以我认为您无法将打包器与tmx文件关联起来。

如果您使用TmxMapLoader,则tileset需要位于.tmx文件的同一文件夹中。 如果它们位于不同的目录中,则需要在.tmx文件中配置源路径。这是一个例子:

<tileset firstgid="257" name="mountain" tilewidth="32" tileheight="32">
  <image source="mountain.png" width="512" height="512"/>
</tileset>

是Tiled的常规输出。如果Tileset在例如配置中,你需要改变它:

<tileset firstgid="257" name="mountain" tilewidth="32" tileheight="32">
  <image source="config/mountain.png" width="512" height="512"/>
</tileset>

但它仍然需要是tmx文件所在路径的子文件夹。

关心希望可能会有所帮助。