Skin中的BitmapFont不能正确绘制标签

时间:2013-04-30 18:42:28

标签: label libgdx skin bitmap-fonts

我使用Hiero制作了一个位图字体,名为default.fntdefault.png。我可以在LibGDX中将它们用作BitmapFont,并使用font.draw()在没有问题的情况下使用字体绘制文本。但是我不能将此字体用作Skin中的默认字体。我使用了来自here的uiskin.json文件(以及其他皮肤,但我在制作自己的字体之前删除了Droid Sans文件),因为我不知道如何制作我自己的文件。根据我在互联网上阅读的内容,.json文件已正确设置:它具有行com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } },这应该使default.fnt成为使用皮肤的小部件的默认字体。不过,当我运行该程序时,我看到了这一点:

Label in window that should show text shows only part of an A, buttons that should have labels empty

按钮上方应该有一个标签,按钮应该有文字。

如果我执行此操作:startGameButton.getStyle().font = font;,其中startGameButton是其中一个按钮,而fontBitmapFont,就像这样创建:font = new BitmapFont(Gdx.files.internal("uiskin/default.fnt"), Gdx.files.internal("uiskin/default.png"), false);,按钮正确显示文本。我不想这样做,因为它感觉太像黑客了。

我正在关注this教程,但我不得不在他的代码的后续版本中查看一些内容,因为LibGDX自编写以来已经发生了变化。

MenuScreen.java(有问题的屏幕)

AbstractScreen.java

另外请告诉我是否有更好的方法来制作菜单UI,或者是否需要其他文件。上面链接了uiskin.json

谢谢。

1 个答案:

答案 0 :(得分:0)

我修好了。 Droid Sans位图图像存在于两个地方,它也是uiskin.png的一部分。我不知道怎么做,但它可能会从该文件而不是default.png读取字体的字母。最后,我刚刚重命名了字体的.fnt.png(以及file中的.fnt参数),并在皮肤.json内进行了搜索替换,现在一切正常。我不确切知道是什么导致了它,但也许default-font是一个保留词或什么。

无论如何,它现在有效。感谢Jyro117让我想到也许我不应该替换默认值但添加我自己的字体。