libGDX TextureAtlas - 在运行时提供主纹理文件名

libGDX TextureAtlas - providing master texture filename at runtime

我想对多个主纹理文件使用相同的 .atlas 文件。 这可以通过拥有多个几乎相同的 .atlas 文件轻松实现(唯一的区别是第一行带有纹理文件名),但这不是最好的解决方案。

我想知道是否可以在运行时、TextureAtlas 对象创建期间或之后提供主纹理文件的名称。 我快速浏览了 TextureAtlas 代码,但 API 似乎不允许这样做,至少不是以一种直接的方式。

您可以将图像目录传递给 TextureAtlas 构造函数。我没试过,但看起来你可以有一个 .atlas 文件,然后在不同的目录中有单独的纹理文件。

来自 TextureAtlas...

public TextureAtlas (FileHandle packFile, FileHandle imagesDir) {
    this(packFile, imagesDir, false);
}

/** @param flip If true, all regions loaded will be flipped for use with a perspective where 0,0 is the upper left corner. */
public TextureAtlas (FileHandle packFile, FileHandle imagesDir, boolean flip) {
    this(new TextureAtlasData(packFile, imagesDir, flip));
}

经过一番研究,似乎只有扩展TextureAtlas,然后复制修改构造函数代码才能实现。 目前贴图文件的名称是通过简单读取图集文件的第一行得到的:

String line = reader.readLine();
                    if (line == null) break;
                    if (line.trim().length() == 0)
                        pageImage = null;
                    else if (pageImage == null) {
                        FileHandle file = imagesDir.child(line);

需要使用作为构造函数参数传递的文件名来创建 FileHandle,而不是这样做。

在这种情况下,我将坚持使用多个图集文件:-)