所以我一直在想的已经得到证实:对话框是用一个 NinePatch 构建的,所以你需要在 .atlas 文件和 .png 文件中手动调整标题栏的大小。
编辑
这基本上是一个如何在 LibGdx 中使用 JSON 文件 的小教程。
LibGdx 有一个非常有用的类,叫做Skin。它允许您拥有一个 .json 文件以及一个 .atlas 文件和 .png 图像,以非常轻松地定义用于制作 Buttons、TextButtons、Dialogs 等的样式。
LibgGdx 默认皮肤
- JSON File
- ATLAS File
- ATLAS Image Pack
- Font File
- Font Image
JSON 文件的工作原理
JSON 文件包含不同类类型及其参数的列表。在这个问题的案例中,我们将查看Dialog 样式。因为对话框是Window 的子类,它使用WindowStyle(并非所有其他类的子类都这样做),所以我们必须查看WindowStyle 的JSON 文件。
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: { titleFont: default-font, background: default-window, titleFontColor: white },
dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim }
},
如您所见,dialog 是用于Dialogs 的样式类型,而默认用于常规Windows。大多数属性是不言自明的,但您需要知道的是,字体总是在 JSON 文件的顶部声明。您可以根据需要添加任意数量,只需确保将字体的 .fnt 文件和 .png 图像包含在与 JSON 文件相同的文件夹中,并正确引用它们。您可以使用像 Hiero 这样的 BitmapFont 生成器轻松制作字体,可以在这里找到:https://github.com/libgdx/libgdx/wiki/Hiero。颜色也在 JSON 文件的顶部创建,就在字体下方。您可以根据需要创建任意数量。 stageBackground 是显示对话框时将覆盖舞台其余部分的颜色。在这种情况下,它是 dialogDim,它在 JSON 文件中定义为 TintedDrawable。最后一个属性是对 ATLAS 图像包中图像的引用。
ATLAS 文件的工作原理
ATLAS 文件基本上是 ATLAS 映像包中对 TextureRegions 的引用的集合。其中许多是不言自明的,其余的可以通过一些尝试和错误来理解,但现在我们将专注于对对话框片段的引用。 default-window ATLAS 文件中对这个位的引用:
default-window
rotate: false
xy: 1, 20
size: 27, 29
split: 4, 3, 20, 3
orig: 27, 29
offset: 0, 0
index: -1
这些字段可能有点令人困惑,我也无法全部理解,但您需要知道的是,rotate 应该始终保持为 false,除非您知道什么时候不应该这样做。 xy 是 ATLAS 图像包中 TextureRegion 的 x 和 y 位置,以像素为单位。 size 是 x 大小和 y 大小,以像素为单位。 split 是 TextureRegion 的拆分方式(不适用于所有 ATLAS 参考),您可以在此处了解有关这些数字如何工作的更多信息:https://github.com/libgdx/libgdx/wiki/Ninepatches。据我所知,orig 始终与size 相同。 offset 应始终保持为 0、0,除非您有理由使该区域从开始时的 xy 位置偏移。 index 为 -1 表示该区域与其他区域位于同一个 ATLAS 图像包中。
如何使用它
现在您可以轻松地进行自己的修改。只需找到您想要添加自己的样式,复制您想要更改的样式的语法(或直接更改默认值),为其添加您自己的名称,然后添加您自己的 ATLAS 参考。在 ATLAS 文件和图像包中,您还可以添加自己的区域。您可能还可以为样式以外的不同类添加自己的属性,因为 Skin 类似乎是 JSON 读取器之上的轻量级包装器,可以轻松读取样式。
我希望这一切都可以理解:)