Libgdx 九补丁文字按钮高度问题
Libgdx nine patch text button height issue
我正在使用 TextButton
在我的游戏中创建对话框气泡效果。
如图所示,我已经创建了九个补丁文件
一切似乎都很好,直到我尝试将此 bubble.9 与 LibGDX 一起使用,TextButton
未根据文本高度正确拉伸。
您可以看到多行文本扩展了 TextButton
高度,但不正确。
这是代码
加载位图字体
FileHandleResolver resolver = new InternalFileHandleResolver();
assetManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
assetManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
FreetypeFontLoader.FreeTypeFontLoaderParameter dialogFont = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
dialogFont.fontFileName = Conf.ASSET_FONT;
dialogFont.fontParameters.size = 8;
初始化 TextButtonStyle
NinePatch patch = atlas.createPatch("bubble");
NinePatchDrawable dialogBoxPatch = new NinePatchDrawable(patch);
buttonStyle = new TextButton.TextButtonStyle();
buttonStyle.up = dialogBoxPatch;
buttonStyle.down = dialogBoxPatch;
buttonStyle.checked = dialogBoxPatch;
buttonStyle.over = dialogBoxPatch;
buttonStyle.font = dialogFont;
buttonStyle.fontColor = Color.BLACK;
实际渲染
dialogBox = new TextButton("some\ntext", buttonStyle);
dialogBox.draw(batch, 1);
有人知道问题出在哪里吗?
终于找到问题了。
我决定用另一种字体测试 ninepatch,它的效果非常好。为了了解发生了什么,我用 glyphrstudio 打开了两种字体。看来有问题的字体设计不正确。
字体错误
字体不错
你可以看到在坏字体上没有正确设置基线和大写高度。
我希望这能帮助其他面临同样问题的人。
我正在使用 TextButton
在我的游戏中创建对话框气泡效果。
如图所示,我已经创建了九个补丁文件
TextButton
未根据文本高度正确拉伸。
您可以看到多行文本扩展了 TextButton
高度,但不正确。
这是代码
加载位图字体
FileHandleResolver resolver = new InternalFileHandleResolver();
assetManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
assetManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
FreetypeFontLoader.FreeTypeFontLoaderParameter dialogFont = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
dialogFont.fontFileName = Conf.ASSET_FONT;
dialogFont.fontParameters.size = 8;
初始化 TextButtonStyle
NinePatch patch = atlas.createPatch("bubble");
NinePatchDrawable dialogBoxPatch = new NinePatchDrawable(patch);
buttonStyle = new TextButton.TextButtonStyle();
buttonStyle.up = dialogBoxPatch;
buttonStyle.down = dialogBoxPatch;
buttonStyle.checked = dialogBoxPatch;
buttonStyle.over = dialogBoxPatch;
buttonStyle.font = dialogFont;
buttonStyle.fontColor = Color.BLACK;
实际渲染
dialogBox = new TextButton("some\ntext", buttonStyle);
dialogBox.draw(batch, 1);
有人知道问题出在哪里吗?
终于找到问题了。 我决定用另一种字体测试 ninepatch,它的效果非常好。为了了解发生了什么,我用 glyphrstudio 打开了两种字体。看来有问题的字体设计不正确。
字体错误
字体不错
你可以看到在坏字体上没有正确设置基线和大写高度。
我希望这能帮助其他面临同样问题的人。