Libgdxで画面を完全に破棄する適切な方法は何ですか? 現在、前の画面でボタンがあった場所をクリックすると、その画面にいた場合と同じようにボタンが実行されます。.dispose()
メソッドでできることすべてを行う必要がありdispose()
ますか? または、画面上のすべてを処分する簡単な方法はありますか?
3 に答える
残念ながら、これ以上簡単な方法はありません。Disposable
これらのクラスは、自動的に実行するために、共通の " " インターフェイスなどを一切共有しません。メソッドを持つものはすべて、dispose()
不要になったときに手動で破棄する必要があります。
これはScreens
自分自身にも当てはまります。切り替え時にScreens
それらは自動的に破棄されませんが、( を呼び出す前にGame.setScreen()
) 自分で破棄する必要があります。
一方、これは大したことではありません。あなたのすべてを調べて、Screen
それを処分する必要があるかどうかを確認してください. dispose メソッドがある場合は、 の中で呼び出しdispose()
ますScreen
。
しかし、これは最後のScreen
. aStage
と usedを使用していると思いますGdx.input.setInputProcessor(stage);
。この設定は、画面を変更しても変更されず、入力プロセッサをStage
current のScreen
、または current の入力を処理するものに設定する必要がありますScreen
。そうすれば、「古い」ステージはもう入力をキャッチしません。
残念ながら、LibGDX APIのドキュメントには
dispose() は自動的に呼び出されないことに注意してください。
が自動的に呼び出され、非常にうまく機能するため、画面内のメソッド内にすべての使い捨て ( Stage
、Skin
、Texture
... など) を配置します。hide()
hide()
例:
public class GameScreen implements Screen {
...
@Override
public void hide() {
mainStage.dispose();
playGroundStage.dispose();
controller.dispose();
labelActor.dispose();
}
...
}