2011-09-13 15 views
1

私はlibgdxフレームワークを使ってゲームを開発しています。私はゲームを一時停止するときに対話を起こしたいと思います。その対話では再開ボタンを使いたいと思います。私はpause()resume()のメソッドを使うべきであることを知っていますが、私はそれらのメソッドで何を書くべきか理解できません。ゲームの開発

ヘルプが表示されます。

マイコード:

@Override 
protected void onPause() { 
// TODO Auto-generated method stub 
super.onPause(); 
} 
@Override 
protected void onResume() { 
// TODO Auto-generated method stub 
super.onResume(); 
} 

答えて

4

私はあなたが混乱していると思いますが、一時停止や状態を再開するには、あなたのゲームまたはゲームは「遊ぶ」されているかどうかは何の関係もないあなたのコールバック関数で示されています。これらの呼び出しは、OSが何らかの理由でアプリケーションを中断することを決定したときに使用されます。

アンドロイドデベロッパーのドキュメントを簡単に見てみると、これらの「生涯」の問題に役立ちます。一方で、自分のポーズを実装し、何らかの形でゲームのロジックを再開する必要があります。

+0

お返事ありがとうございます。私には論理がありますが、どこに書き込むのか理解できません。あなたは私を助けてくれますか? – pradeepkalla

+0

私はあなたがロジックの仕組みを見ることができるように、すでにこのインターフェースを実装しなければならないコードのビットを含む別の質問を開くことをお勧めします – Elemental

1

この問題を解決する1つの方法は、ゲームの状態(PLAY、PAUSE)の列挙を作成することです。メインのゲームループでは、if elseステートメントを使用できます。 if(GameState == PLAY)すべてのゲームプレイを更新します。 if(GameState == PAUSE)でメニューマネージャを更新します。

通常、ゲームアーキテクチャでは、これらのタイプの問題に対して状態を使用する必要があります。ゲームアーキテクチャのもう1つのルールは、すべてのゲームプレイエンティティがelapsedTimeに関連して動作するようにすることです。そうすることで、ゲームのプレイ率は、ゲームがどのデバイスでプレイされているかにかかわらず、常に同じになります。私は全ての動きで秒を小数として使用しているので、すべての動きは毎秒メートルです。そうすれば、私は本当の物理方程式を取り込めるので、いつも物事を働かせようとしている狂った数を追いかけることはありません。

この場合の一時停止のクイックフィックスは、ゲームが一時停止状態のときに経過秒数をゼロに設定することです。これはハックです!ほとんどの場合、特にゲームクラスなどのマネージャクラスでは、状態を使用することが最良のアイデアであることが証明されています。

状態間の遷移を担当するGameStateクラスを作成することも考えられます。これは、画面の上から下に移動するメニューなど、サウンドを再生してアニメーションを開始する場合に便利です。この時点では、ゲームはPAUSEでもPLAYでもありません。思考の糧。

TOMBSTONEとREVIVEの移行ステートを持つモバイルゲームは、デバイスが他のアプリケーションを処理している間に一時的にストレージをストレージにキャッシュするのに最適です。