libGDX - FitViewport 正在拉伸舞台

libGDX - FitViewport is stretching the stage

我正在创建一个游戏,我不希望在调整 window 大小时我的屏幕被拉伸(当然前提是它可以适应 window)。我正在使用带有 FitViewportStage 对象,但是当我调整 window 大小时,它上面的元素也会被调整大小。我做错了什么?

这是我的屏幕class:

public class SplashScreen implements Screen{

    private final PuzzleGame app;
    private Stage stage;

    private Image splashImage;

    public SplashScreen(final PuzzleGame app) {
        this.app = app;
        this.stage = new Stage(new FitViewport(PuzzleGame.V_WIDTH, PuzzleGame.V_HEIGHT, app.camera));
        Gdx.input.setInputProcessor(stage);

        Texture splashTex = new Texture(Gdx.files.internal("img/splash.png"));
        splashImage = new Image(splashTex);
        splashImage.setPosition(stage.getWidth() / 2, stage.getHeight() / 2);

        stage.addActor(splashImage);
    }

    @Override
    public void show() {
    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(.25f, .25f, .25f, 1f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        update(delta);

        stage.draw();
    }

    private void update(float delta) {
        stage.act(delta);
    }

    @Override
    public void resize(int width, int height) {
        stage.getViewport().update(width, height, false);
    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }

    @Override
    public void hide() {
    }

    @Override
    public void dispose() {
        stage.dispose();
    }
}

正如 Tenfour04 已经指出的,您正在寻找 ScreenViewport

您可能想查看 this question and then re-read the Viewports wiki article

基本上,有两种不同的视口,Camera 和 OpenGL 视口。

FitViewport 保持相机视口不变,但放大或缩小 OpenGL 视口。结果将是所有尺寸看起来更大或更小,具体取决于与相机视口相比,OpenGL 视口的大小。

ScreenViewport 另一方面,保持相机视口和 OpenGL 视口大小相同,这将导致元素始终具有相同大小。