andengineで画面上の一時停止ボタンを作成したい
私が今していることは、スプライトを追加することです。それに触れると、engine.stop()を実行します。これに関する問題は、ゲームを再開するまで、エンジンがそれ以上のタッチイベントを処理しないことです(現在はメニューボタンを使用していますこれ)、それを達成する方法はありますか?
ありがとう!
AndEngineの例を見てください。AndEngineでのメニューの使用法を示すプロジェクトがあります。エンジンを停止する以外に、メニューを実装するためのより良い方法を見つけることができます。幸運を!
シーンを作成するのが最善の方法であり、一時停止したときに、この方法でonManagedUpdateをオーバーライドするように設定します。
@Override
onManagedUpdate(float pSecondsElapsed){
if(mPaused) super.onManagedUpdate(0);
else super.onManagedUpdate(pSecondsElapsed);
}
このようにして、すべてが完全に機能し、ゲームレイヤーでそれを実行して、メニューレイヤーを通常どおりに更新することができます。
画面の一時停止ボタンで簡単に行うことができます。あなたがする必要があるのは、画面上のどこかに一時停止ボタンを作成し、そのボタンに触れると、元の一時停止ボタンの上に再生ボタン付きのMenuSceneを表示することです。PauseMenuの例から.buildAnimations()コードをコメントアウトする場合は、MenuItemに.setPosition()を使用できます。
アイデアを示すために、その可能性を示す簡単なアクティビティを作成しました。見て、自分で試してみてください。
リンク:https ://github.com/reittes/On-Screen-Pause-Button
幸運を
私が行うことは、ファイルに「一時停止」ブール値を追加し、ボタンでそれをtrueに設定してから、エンジンアップデーターをif (!pause) {...}
ブロックで囲み、一時停止したときに更新を停止するようにします。最もエレガントなソリューションではありませんが、私のゲームで機能し、一時停止を解除してもパフォーマンスの問題は発生しませんでした。
Pseduコード
@Override
public boolean onKeyDown(final int pKeyCode, final KeyEvent pEvent) {
if (pKeyCode == KeyEvent.KEYCODE_MENU && pEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (this.mEngine.isRunning()) {
gSceneGlobal.setChildScene(this.mGamePauseScene, false, true, true);
this.mEngine.stop();
} else {
gSceneGlobal.clearChildScene();
this.mEngine.start();
}
return true;
} else {
return super.onKeyDown(pKeyCode, pEvent);
}
}
クラスを作成し(MyEngine extends Engine)、変更しました
@Override
public boolean onTouch(final View pView, final MotionEvent pSurfaceMotionEvent) {
if(!isRunning()) {
// add your code for engine.stop();
}
}
ゲームクラスでMyEngineエンジンを作成します。