12

ゲーム画面の上にいくつかの GUI が必要な libgdx で作成されたゲームに取り組んでいます。FrameLayoutAndroidのようなもの。

すべてが起こっているGameScreenがあります。今欲しいのは、「一時停止」ボタンやハイスコア情報などを追加することです。

Stageオブジェクトを通常のスプライト描画と組み合わせようとしました。しかし、入力の処理に問題がありました。ユーザーがステージで一時停止ボタンをクリックしたか、ゲームエリアをクリックしたかを管理する方法 (箇条書きを追加する必要がある場所)...

4

1 に答える 1

23

Stageを使用して UI を管理できるはずです。入力を正しく機能させるには、 を追加しInputMultiplexerStage、現在の入力スキームが両方とも入力を取得するようにする必要があります。

設定するには、次のようにします。

InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(stage);
multiplexer.addProcessor(gameScreenInputProcessor);
Gdx.input.setInputProcessor(multiplexer);

( https://code.google.com/p/libgdx/wiki/InputEventのコードに基づくコード サンプル)

順序が重要であることに注意してください (UI がタッチされているかどうかを確認するために、最初にステージでイベントを取得する必要があると思います)。また、入力イベント ハンドラからのブール値の戻り値は、「処理された」イベントがマルチプレクサによって伝播されないため、マルチプレクサではより重要です。内部の UI イベントにStageは、独自の「処理済み」フラグがあります (ほとんどの場合、正しいことを行いますが、微妙な違いがいくつかあります)。

に代わる 1 つの方法は、グローバル にプラグインする現在のゲーム画面を含むInputMultiplexer"GameScreenActor" ( の新しいサブクラス) を作成することです。ただし、入力処理を scene2d アプローチに移行する必要があります。これはおそらくあなたにとって正しい選択ではありませんが、実行可能な選択です。ActorStage

于 2013-03-04T15:27:32.100 に答える