この問題を解決する1つの方法は、ゲームの状態(PLAY、PAUSE)の列挙型を作成することです。メインのゲームループでは、ifelseステートメントを使用できます。if(GameState == PLAY)すべてのゲームプレイのものを更新します。if(GameState == PAUSE)メニューマネージャーを更新します。
通常、ゲームアーキテクチャでは、これらのタイプの問題に状態を使用する必要があります。ゲームアーキテクチャのもう1つのルールは、すべてのゲームプレイエンティティが経過時間に関連して動作するようにすることです。そうすれば、ゲームがどのデバイスでプレイされていても、ゲームプレイの速度は常に同じになります。私はすべてのゲームで秒を小数として使用しているため、すべての動きはメートル/秒です。そうすれば、実際の物理方程式をプラグインできるので、物事を機能させるために常に狂った数字を追いかけているわけではありません。
この場合の一時停止の簡単な修正は、ゲームが一時停止状態のときに経過秒数をゼロに設定することです。これはハックです!特にゲームクラスなどのマネージャークラスでは、状態を使用することがほとんどの場合最良のアイデアであることを証明します。
状態間の遷移を担当するGameStateクラスの作成を検討することもできます。これは、サウンドを再生したり、メニューが画面の上から下に移動するなどのアニメーションを開始したりする場合に便利です。この場合、ゲームは一時停止でも再生でもありません。思考の糧。
モバイルゲームに入ると、TOMBSTONEとREVIVEの遷移状態を持つことは、デバイスが他のアプリケーションを処理している間、ゲームを一時的にストレージにキャッシュするのに最適です。