Я ломаю голову, пытаясь понять, что здесь происходит... Я использую FitViewport, который отлично работает всякий раз, когда я изменяю размер экрана, но когда он впервые создается во время конструктора, он не вписывается в экран. как это должно быть (и как это происходит, когда я изменяю размер).
Вот код моего конструктора и метода resize():
public class UpgradesScreen implements Screen {
private ScreenHandler sh;
private OrthographicCamera cam;
private Viewport viewport;
public UpgradesScreen(ScreenHandler sh) {
Gdx.app.log("UpgradesScreen", "Attached");
this.sh = sh;
cam = new OrthographicCamera();
cam.setToOrtho(true, sh.V_WIDTH, sh.V_HEIGHT);
viewport = new FitViewport(sh.V_WIDTH, sh.V_HEIGHT, cam);
viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}
@Override
public void resize(int width, int height) {
Gdx.app.log("UpgradesScreen", "resizing");
viewport.update((int) width, (int) height);
}
Я проверил, чтобы убедиться, что Gdx.graphics.getWidth() дает ту же цифру, что и аргумент «ширина», который метод resize() получает при изменении размера экрана (аналогично со значениями «высоты»).
Насколько я могу судить, область просмотра должна вести себя точно так же во время конструктора, как и при изменении размера. Так почему он упрямится и не обновляется, чтобы соответствовать?
Вот как это выглядит после изменения размера:
... и вот как это выглядит, когда экран создается впервые, до того, как размер окна будет изменен вручную: