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

libGDX TextureAtlas-在运行时提供主纹理文件名,libgdx,Libgdx,我想对多个主纹理文件使用相同的.atlas文件。 这可以通过拥有多个几乎相同的.atlas文件(唯一的区别是纹理文件名的第一行)轻松实现,但这不是最好的解决方案 我想知道是否可以在运行时、TextureAtlas对象创建期间或以后提供主纹理文件的名称。 我快速查看了TextureAtlas代码,但API似乎不允许这样做,至少不是以一种简单的方式。您可以将图像目录传递给TextureAtlas构造函数。我还没有试过,但是看起来你可以有一个.atlas文件,然后在不同的目录下有单独的纹理文件 从纹理

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

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

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

从纹理图像

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,然后复制和修改构造函数代码。 目前,仅通过读取atlas文件的第一行即可获得纹理文件的名称:

String line = reader.readLine();
                    if (line == null) break;
                    if (line.trim().length() == 0)
                        pageImage = null;
                    else if (pageImage == null) {
                        FileHandle file = imagesDir.child(line);
需要使用作为构造函数参数传递的文件名来创建文件句柄,而不是这样做


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

谢谢,但这不是我想要的。此解决方案将多个atlas文件替换为多个文件夹,每个文件夹中只有一个文件,这并不是真正的改进。我今天已经做了一些研究,但仅仅使用API是无法实现我想要的。我找到的唯一方法是修改构造函数代码,我写了一个答案。不过,我不打算实施这个解决方案。这很公平。我认为这是对多个atlas文件的一种改进,因为您不再需要维护多个几乎相同的atlas文件。不过,这是你的项目。通常你是对的,维护会更容易。但是,这些特定的文件实际上不会被更改。不过,我可能会在其他地方使用你的解决方案,所以谢谢你指点我!