2

libgdxでは、ユーザーが一時停止をクリックすると一時停止画面が表示され、現在の画面の上にレイヤーが表示され、ユーザーが再開をクリックすると画面を閉じる必要があります。libgdxで実装するにはどうすればよいですか。

4

3 に答える 3

6

ここでネイティブの Android View を使用するという提案は好きではありません。これは libgdx 自体の内部できちんと行うことができます。

ゲームの現在の状態を定義する変数があればよかったのに。一時停止ボタンが押された場合、または Android によってゲームが一時停止された場合 (たとえば、ユーザーがホーム ボタンを押した場合)、この変数は一時停止された値を取得する必要があります。次に render() メソッドで、この変数の値が一時停止の場合、一時停止画面を描画します。

この画面は、複数の方法で描画できます。ステージを使用している場合、次の 2 つの優れたオプションがあります。

  1. 一時停止している場合は、ゲーム ステージに加えて、ゲーム ステージを描画した後に一時停止アイテムでセージを描画します。その後、ゲームのトップになります。

  2. ウィンドウ アクターを作成し、そこに一時停止アイテムを追加できます。次に、ゲームが一時停止したら、それを追加/ステージに表示します。

いくつかのコード例:

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();
    }
}

完全に機能する例ではありませんが、基本的なロジックを示しています。

于 2012-07-13T12:25:57.567 に答える
1

宣言する

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;

そして update メソッドで

            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;
    }

これは間違いなくあなたを助けます。

于 2013-04-11T12:23:44.847 に答える