无法使用Skin更改TextButton的字体

时间:2017-09-07 02:04:51

标签: java android fonts libgdx

我正在使用uiskin.png,uiskin.atlas,uiskin.json和default.fnt作为此链接提供的upcomming代码的ressources。https://github.com/libgdx/libgdx/tree/master/tests/gdx-tests-android/assets/data

首先,我从BitmapFont文件中创建ttf,因为它支持任何大小而不会出现像素化。 然后我将uiskin.json加载到我的skin。之后我删除了默认字体,并将生成的tff字体添加到skin default-font

虽然我更改了default-font,但字体尚未更改。 问题在哪里?如何更改皮肤的字体?

注意:我已经测试过显示mainMenuFont50。字体似乎工作正常。

public class Screen{
    private BitmapFont mainMenuFont50;
    private Stage stage;
    private Skin skin;
    private TextButton buttons;

    public Screen(GdxGame game){
        //creating BitmapFont from ttf
        generator = new FreeTypeFontGenerator(Gdx.files.internal("font/Capture_it.ttf"));
        parameter = new FreeTypeFontParameter();
        parameter.size = 50;
        mainMenuFont50 = generator.generateFont(parameter);
        generator.dispose();

        this.skin = new Skin();
        this.skin.load(Gdx.files.internal("ui/uiskin.json"));
        this.skin.remove("default-font", BitmapFont.class);
        this.skin.add("default-font", mainMenuFont50);

        buttons = new TextButton("Hello World", skin);
        stage.addActor(buttons);
    }
}

1 个答案:

答案 0 :(得分:2)

您无法更改皮肤的字体。构造外观并添加自定义字体。

按照以下步骤操作:

  • 使用默认构造函数创建空白外观。

    Skin skin = new Skin();
    
  • 将所需字体添加到生成的皮肤

    skin.add("font", mainMenuFont50);
    
  • 将您的地图集文件添加到您的皮肤。

    skin.addRegion(new TextureAtlas(Gdx.files.internal("uiskin.atlas")));
    
  • 编辑并将json文件加载到皮肤上。

    skin.load(Gdx.files.internal("uiskin.json"));
    
  • 您的JSON文件引用了“font”

    {
       font: font
    }