libgdx如何让两个或多个不同的字体文件使用同一个图集?

How to make two or more different font files use a common Atlas in libgdx?

我为不同的屏幕使用不同的字体。有些字体只有几个字母,所以为每个字体生成一个图集效率很低font.So有没有办法让我所有的字体都使用一个图集?

您可以使用带有 TextureRegion 的构造函数。例如,如果您的字体和图像被命名为 myFont.fntmyFont.png,您可以将 myFont.png 与其余的 sprite 源图像放在一起并将其打包到纹理图集中。将 .fnt 文件与您的其余资产放在一起。然后加载纹理图集后:

myFont = new BitmapFont(Gdx.files.internal("myFont.fnt"), myTextureAtlas.findRegion("myFont"));

要在皮肤中使用它,您需要在加载 Json 文件之前将其添加到皮肤:

skin = new Skin(); // instantiate blank skin
skin.add(myFont, "myFont");
skin.load(Gdx.files.internal("mySkin.json"));

Json 文件可以通过添加到皮肤时使用的名称引用字体。

尽管如此,我还是强烈建议对所有内容都使用 AssetManager。在这种情况下,您的皮肤 Json 可以正常定义字体。除了将所有内容加载到资产管理器之外,您唯一需要的额外步骤是添加一个 BitmapFontLoader.BitmapFontParameter 来指定包含该区域的 TextureAtlas。 AssetManager 将使用它来确定 BitmapFont 是否依赖于图集,因此它将以正确的顺序加载它们。

BitmapFontLoader.BitmapFontParameter fontParam = new BitmapFontLoader.BitmapFontParameter(){{
    atlasName = "mySkin.pack";
}};
assetManager.load("myFont.fnt", BitmapFont.class, fontParam);

图集应该和皮肤用的一样