android - studio - libgdx ubuntu
juego libgdx cómo mostrar la pantalla de pausa cuando el usuario hace clic en el icono de pausa (3)
En libgdx cómo mostrar la pantalla de pausa cuando el usuario hace clic en pausa y debe ser una capa sobre la pantalla actual y debe cerrar la pantalla cuando el usuario haga clic en reanudar cómo puedo implementarlo en libgdx.
No me gusta la sugerencia sobre el uso de Android View nativo aquí, esto se puede hacer perfectamente dentro de libgdx.
Hubiera tenido alguna variable que define el estado actual del juego. Si se presiona el botón de pausa, o el juego es detenido por Android (por ejemplo, si el usuario presiona el botón de inicio), esta variable debería tener un valor en pausa. Luego, en su método de renderizado (), si esta variable tiene el valor de pausa, dibuje una pantalla de pausa.
Esta pantalla se puede dibujar de múltiples maneras. Si está utilizando un escenario, tiene dos excelentes opciones:
Si está en pausa, además de la etapa del juego, dibuje un sabio con elementos de pausa después de dibujar el escenario del juego. Entonces estará en la parte superior del juego.
Puede crear algún actor de Ventana y agregarle los elementos de pausa. Luego, cuando el juego está en pausa, lo agregas / haces visible en tu escenario.
Un código de ejemplo:
public class GameScreen implements Screen {
private Stage mystage;
public static final int GAME_RUNNING = 0;
public static final int GAME_PAUSED = 0;
private int gamestatus;
// ...
public void render(float deltaTime) {
// draw game normally, probably shouldn''t update positions etc. if
// the game is paused..
if (pausebutton is pressed) {
pauseGame();
}
if (gamestatus == GAME_PAUSED) {
// draw pause screen
}
}
public void pauseGame() {
gamestatus = GAME_PAUSED;
}
// this is called by android
public void pause() {
pauseGame();
}
}
No es un ejemplo completamente funcional, pero muestra la lógica básica.
declararlo
public static final int GAME_READY = 0;
public static final int GAME_RUNNING = 1;
public static final int GAME_PAUSED = 2;
public static final int GAME_OVER = 4;
public static int state;
y en el método de actualización
switch (state) {
case GAME_READY:
updateReady();
break;
case GAME_RUNNING:
updateRunning(delta);
break;
case GAME_PAUSED:
updatePaused();
break;
case GAME_OVER:
gameOver = true;
updateGameOver();
break;
}
Esto definitivamente te ayudará.
boolean GAME_PAUSED = false;
if (GAME_PAUSED) {
//Do not update camera
batch.begin();
resumeButton.draw(batch);
batch.end();
} else {
//Update Camera
Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
world.step(1/60f, 8, 3);
camera.update();
debugRenderer.render(world, camera.combined);
//Do your game running
}