现在...我正在使用根表格(如表格指南https://github.com/libgdx/libgdx/wiki/Table#quickstart中所述)来填充舞台。
我想创建一个自定义类来处理所有的HUD界面,例如:
public class Hud extends Table{
private Label scoreLabel;
private Button pauseButton;
public Hud(){
setFillParent(true);
BitmapFont font = (BitmapFont) MyGame.assetManager.get(Constants.COUNTERS_FONT_NAME);
LabelStyle labelStyle = new LabelStyle(font,Color.WHITE);
scoreLabel = new Label("score:0", labelStyle);
add(scoreLabel).width(2).height(1);
}
}
我正在处理的问题是:标签内的文本不会停留在标签内。我的意思是:启用调试模式后,我可以看到代表标签的矩形具有正确的尺寸...但文本完全超出了边界并且无法缩放。
如您所见,我使用的字体是在游戏启动时通过FreeTypeFont库生成的BitmapFont...然后将该字体添加到游戏的AssetsManager中。
我发布用于将字体生成器添加到资产管理器的代码:
//Register the FreeTypeFontGeneratorLoader
InternalFileHandleResolver resolver = new InternalFileHandleResolver();
assetManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
assetManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
//Load fonts
FreeTypeFontLoaderParameter countersFontParameters = new FreeTypeFontLoaderParameter();
countersFontParameters.fontFileName = Constants.BASE_FONT_NAME;
countersFontParameters.fontParameters.size = 45;
countersFontParameters.fontParameters.borderColor = Color.BLACK;
countersFontParameters.fontParameters.borderWidth = 1;
assetManager.load(Constants.COUNTERS_FONT_NAME, BitmapFont.class, countersFontParameters);
如您所见,我只加载了一个大小为45像素的BitmapFont。
我不知道问题出在哪里;我想尝试使用经典的.fnt格式的BitmapFont来查看问题是否在生成BitmapFont的方式上,但我也想保留FreeTypeFont的解决方案。
提前感谢您的帮助,
Luca
P.S.
关于舞台的一件事...它使用ScalingViewport,因此尺寸不是以像素为单位而是以虚拟单位为单位(因为我的游戏使用Box2d,我需要一个用于渲染和物理模拟的通用单位)。