4

在 LibGDX 中,我目前正在尝试实现像素化 GUI 的效果,这意味着按钮是像素化的,就像 8 位主题一样。

当我制作我的 GUI 元素(例如 TextButton)时,我使用的是很小的图像,比如34x16像素,但我正在以较大的分辨率(例如1920x1080. 以高分辨率渲染如此小的图像的最佳方法是什么?

我的想法是使用stage.setViewport(WIDTH,HEIGHT),并将宽度和高度设置为按比例缩小的分辨率,这样 gui 元素就不会那么大。这可行,但是当添加元素时会出错。在此处输入图像描述

这是我目前的舞台/桌子,使用按比例缩小的分辨率。我正在使用这样的表添加小部件:

    table.add(playButton);
    table.row();
    table.add(title);

但正如您所看到的,这table.row()使得一行太大,也许一行适合更大的分辨率。有什么办法可以改变行造成的差距?我原以为差距会为零,通过使用table.add().pad()你可以改变差距,但我没有这样做。

任何帮助将不胜感激。

4

2 回答 2

1

九补丁

这是所有应用程序中的常见问题。为了克服这个问题,使用可以安全地调整部分大小的图像。它们被称为九块。

这是一个很好的关于在 libgdx 中使用它们的教程


距离场字体

尽管您在这里没有提到它,但您也会发现字体大小(像素化字体)是一个问题。为此,使用了距离场字体

希望这可以帮助。

于 2014-04-04T13:36:21.103 回答
1

我想说不要担心扩大它们并使虚拟分辨率更大。如果您想在缩放时看到仍然像素化的图片,请使用纹理过滤器。对于您的情况,您想使用最近的过滤器。像这样使用它:

yourTexture.setFilter(TextureFilter.Nearest, TextureFilter.Nearest);

其中 yourTexture 是您拥有所有位图和皮肤元素的纹理。如果您使用的是 texturePacker,那么您也可以在打包之前指定过滤器。或者只是打开 .pack 文件,在顶部您会看到过滤选项,然后将其编辑为 Nearest。

于 2014-04-04T16:10:09.797 回答