Libgdx 以编程方式更改字体时皮肤未更新
Libgdx Skin not Updating when Changing Font Programmatically
首先,我将皮肤加载为 json 文件。在文件中,我放置了两个 BitmapFont 定义("font" 和 "big-font")并将它们留空(我加载了一个虚拟的“.fnt”文件以防止解析器出错)。然后我使用以下代码生成了两个 FreeType 字体:
//start font generator
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/button-font.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameters = new FreeTypeFontGenerator.FreeTypeFontParameter();
//default font (the sizes are arbitrary, since it did not work...)
parameters.size = 10;
BitmapFont defaultFont = generator.generateFont(parameters);
//big font
parameters.size = 100;
BitmapFont bigFont = generator.generateFont(parameters);
并将它们设置为皮肤字体,如下所示:
skin.add("font", defaultFont, BitmapFont.class);
skin.add("big-font", bigFont, BitmapFont.class);
问题是 gui(特别是使用 "font" 字体的 TextButton)似乎并不关心我以编程方式做了什么,而是继续使用我在 json 文件.
我做错了什么?有没有更好的方式整合ttf字体和json皮肤解析?
在此先感谢您的帮助。
按照以下步骤操作:
首先,从 TTF 文件创建字体
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/button-font.ttf"));
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 10;
BitmapFont defaultFont = generator.generateFont(parameter);
generator.dispose(); // don't forget to dispose to avoid memory leaks!
使用默认构造函数创建一个空白皮肤并将您的字体添加到皮肤中。
Skin skin = new Skin();
skin.add("font",defaultFont);
将您的图集文件添加到您的皮肤中。
skin.addRegion(new TextureAtlas(Gdx.files.internal("mySkin.atlas")));
将您的 Json 文件加载到您的皮肤。
skin.load(Gdx.files.internal("mySkin.json"));
然后,在您的 JSON 文件中您可以引用“字体”
{
font: font
}
首先,我将皮肤加载为 json 文件。在文件中,我放置了两个 BitmapFont 定义("font" 和 "big-font")并将它们留空(我加载了一个虚拟的“.fnt”文件以防止解析器出错)。然后我使用以下代码生成了两个 FreeType 字体:
//start font generator
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/button-font.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameters = new FreeTypeFontGenerator.FreeTypeFontParameter();
//default font (the sizes are arbitrary, since it did not work...)
parameters.size = 10;
BitmapFont defaultFont = generator.generateFont(parameters);
//big font
parameters.size = 100;
BitmapFont bigFont = generator.generateFont(parameters);
并将它们设置为皮肤字体,如下所示:
skin.add("font", defaultFont, BitmapFont.class);
skin.add("big-font", bigFont, BitmapFont.class);
问题是 gui(特别是使用 "font" 字体的 TextButton)似乎并不关心我以编程方式做了什么,而是继续使用我在 json 文件.
我做错了什么?有没有更好的方式整合ttf字体和json皮肤解析?
在此先感谢您的帮助。
按照以下步骤操作:
首先,从 TTF 文件创建字体
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/button-font.ttf")); FreeTypeFontParameter parameter = new FreeTypeFontParameter(); parameter.size = 10; BitmapFont defaultFont = generator.generateFont(parameter); generator.dispose(); // don't forget to dispose to avoid memory leaks!
使用默认构造函数创建一个空白皮肤并将您的字体添加到皮肤中。
Skin skin = new Skin(); skin.add("font",defaultFont);
将您的图集文件添加到您的皮肤中。
skin.addRegion(new TextureAtlas(Gdx.files.internal("mySkin.atlas")));
将您的 Json 文件加载到您的皮肤。
skin.load(Gdx.files.internal("mySkin.json"));
然后,在您的 JSON 文件中您可以引用“字体”
{ font: font }