libgdxでは、ユーザーが一時停止をクリックすると一時停止画面が表示され、現在の画面の上にレイヤーが表示され、ユーザーが再開をクリックすると画面を閉じる必要があります。libgdxで実装するにはどうすればよいですか。
10953 次
3 に答える
6
ここでネイティブの Android View を使用するという提案は好きではありません。これは libgdx 自体の内部できちんと行うことができます。
ゲームの現在の状態を定義する変数があればよかったのに。一時停止ボタンが押された場合、または Android によってゲームが一時停止された場合 (たとえば、ユーザーがホーム ボタンを押した場合)、この変数は一時停止された値を取得する必要があります。次に render() メソッドで、この変数の値が一時停止の場合、一時停止画面を描画します。
この画面は、複数の方法で描画できます。ステージを使用している場合、次の 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 に答える