libgdx - ui SpriteBatch 需要根据 window 大小进行缩放?

libgdx - ui SpriteBatch needs to scale based on window size?

我目前正在使用 libgdx 1.5.4。通常修改屏幕尺寸,我是这样做的:

public class DesktopLauncher {
   public static void main (String[] arg) {
      LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();

      int temp = 3; //scale viewport
      config.width = temp *160;
      config.height = temp *144;

      new LwjglApplication(new MyGame(), config);
   }
}

上面的临时变量会将桌面应用程序 window 的大小缩放某个数字(在本例中为 3)。在我的 render() 循环中,我有一个未被相机修改的批处理 (floatingBatch = new SpriteBatch();),用于绘制我的 'ui' 元素:

      floatingBatch.begin();
                //bunch of floatingBatch.draw()'s...
      floatingBatch.end();

不过,我注意到 floatingBatch 中的坐标不随我的屏幕尺寸缩放。例如,如果 temp above = 1,则浮动批处理中的点 (200,200) 将在屏幕外,但如果 temp = 3,则将在屏幕上。这是不对的,我希望 floatingBatch 随 window 缩放。如果我从 temp = 1 开始,然后手动将 window 拖到它的起始大小的大约 3 倍,显然一切都是我想要的。

我尝试过的一件事是上面的 temp = 1,然后在我的 create() 函数中执行此操作:

Gdx.graphics.setDisplayMode(160*3, 144*3, false);

上面的很好,而且可以工作,但在视觉上看起来有点尴尬(屏幕最初为 144x160,然后调整为该尺寸的 3 倍。)是否有更好的方法来完成我所描述的内容?我可以以某种方式更改 floatingBatch 以使其随 window 缩放吗?

您可以使用

Gdx.graphics.getWidth();

Gdx.graphics.getHeight();

获取设备的像素数然后调整你的scene2d

请参阅 the api 以获得更多帮助