我有一个带有SpriteBatch的GameScreen来绘制我的所有纹理,但我现在想在屏幕上添加一个暂停按钮。我试图在我的SpriteBatch上使用一个舞台,但由于某种原因它不会出现。
这里有一些代码:
构造函数:
public GameScreen(MyGame game) {
stage = new Stage();
table = new Table();
pause_texture = new Texture("path_to_texture.png");
pause_image = new Image(pause_texture);
pause_image.setPosition(1920 - pause_image.getWidth() - 20, 20);
table.add(pause_image);
stage.addActor(table);
}
渲染方法:
public void render(float delta) {
Gdx.gl.glClearColor(1f, 1f, 1f, 1f);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
stage.act(delta);
stage.draw();
game.camera.update();
game.batch.setProjectionMatrix(game.camera.combined);
game.batch.begin();
//rendering stuff here
game.batch.end();
}
我做错了什么?
答案 0 :(得分:0)
不要在表格上使用绝对位置,只需执行以下操作:
public GameScreen(MyGame game){
stage = new Stage();
table = new Table();
pause_texture = new Texture("path_to_texture.png");
pause_image = new Image(pause_texture);
table.add(pause_image);
table.bottom().right();
stage.addActor(table);
}
有关进一步参考,请参阅Libgdx Wiki上的Table
不要忘记移动stage.act(delta);和stage.draw();在batch.end()之后,GUI是应该呈现的最后一件事,因此它可以在所有内容的前面。