libgdx - ui SpriteBatch需要根据窗口大小进行扩展吗?

时间:2015-04-10 19:14:17

标签: java android libgdx

我目前正在使用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);
   }
}

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

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

我注意到,floatingBatch中的坐标不随我的屏幕尺寸而缩放。例如,如果temp高于= 1,则浮动批次中的点(200,200)将在屏幕外,但如果temp = 3,则将在屏幕上。这是不对的,我希望floatingBatch随窗口缩放。如果我从temp = 1开始,只需手动将窗口拖出大约3倍它的起始大小,一切都是我想要的。

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

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

以上情况很好,并且有效,但在视觉上看起来有点尴尬(屏幕首先以144x160开始,然后调整为3倍大小。)有没有更好的方法来做我所描述的?我可以以某种方式更改floatingBatch,以便它随窗口缩放吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

Gdx.graphics.getWidth();

Gdx.graphics.getHeight();

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

有关更多帮助,请参阅the api