libgdx如何让两个或多个不同的字体文件使用同一个图集?
How to make two or more different font files use a common Atlas in libgdx?
我为不同的屏幕使用不同的字体。有些字体只有几个字母,所以为每个字体生成一个图集效率很低font.So有没有办法让我所有的字体都使用一个图集?
您可以使用带有 TextureRegion 的构造函数。例如,如果您的字体和图像被命名为 myFont.fnt
和 myFont.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);
图集应该和皮肤用的一样
我为不同的屏幕使用不同的字体。有些字体只有几个字母,所以为每个字体生成一个图集效率很低font.So有没有办法让我所有的字体都使用一个图集?
您可以使用带有 TextureRegion 的构造函数。例如,如果您的字体和图像被命名为 myFont.fnt
和 myFont.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);
图集应该和皮肤用的一样