Libgdx桌面窗口resize

我试图用libgdx做游戏

我想在屏幕中间创建3×3网格我运行桌面项目,似乎没有太大的问题,但如果我调整窗口的大小,3×3网格移动到屏幕的左下角(我想使它始终在屏幕中央不管屏幕大小的变化)

我的代码有什么问题,我是一个开发游戏的新手。

public class GameScreen implements Screen { MyGdxGame game; SpriteBatch batch; Texture img, item; public GameScreen(MyGdxGame game) { this.game = game; batch = new SpriteBatch(); // a 640x480 image for testing background position img = new Texture(Gdx.files.internal("640Wx480H.png")); // a 64x64 image for grid item item = new Texture(Gdx.files.internal("badlogic.jpg")); } @Override public void render(float delta) { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); Gdx.gl.glClearColor(1, 1, 1, 1); batch.begin(); batch.draw(img, 0, 0); float itemSize = item.getWidth(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { batch.draw(item, itemSize * i + (Gdx.graphics.getWidth() - (itemSize * 3)) / 2, itemSize * j + (Gdx.graphics.getHeight() - (itemSize * 3)) / 2); } } batch.end(); } @Override public void resize(int width, int height) { } @Override public void show() { } @Override public void hide() { } @Override public void pause() { } @Override public void resume() { } @Override public void dispose() { img.dispose(); item.dispose(); } } public class MyGdxGame extends Game { GameScreen mainGameScreen; private Viewport viewport; private OrthographicCamera camera; @Override public void create() { camera = new OrthographicCamera(); camera.setToOrtho(false, 640, 480); viewport = new FitViewport(640, 480, camera); mainGameScreen = new GameScreen(this); setScreen(mainGameScreen); } public void resize(int width, int height) { viewport.update(width, height); } public void render(float delta) { } public void dispose() { } } 

你似乎设置了一个摄像头和一个视口,但没有使用它们。

MyGdxGame类的resize()上,相机也应该被更新:

 public void resize(int width, int height) { viewport.update(width, height); camera.update(); } 

然后,这应该在batch.begin()之前的render(float delta)方法中:

 batch.setTransformMatrix(game.getCamera().view); batch.setProjectionMatrix(game.getCamera().projection); 

为此,请在MyGdxGame类中为相机创建一个getter。

也许还有其他的东西不存在了(我正在做我的头顶),但是有一个开始。