ゲームのプレイ中にバックグラウンドでカウンターを実行して、プレイヤーが 1 分間生き残ったときに何かが発生するようにしたいと考えています。
現在、開始時にシステム時間を取得し (surfaceCreated など)、物理更新メソッドで現在の時間を取得して 2 つを比較することで、これを行うことを考えています。60,000 ミリ秒が経過すると、明らかに 1 分が経過したことがわかります。
これはこれを行うための最良の方法ですか?または、別の/より良い/より簡単な方法があります。
皆さんありがとう
それはそれについて行く良い方法です。
他に多くのオプションはありません。私のゲームでは、フレーム更新の直前にリセットを停止するストップウォッチを使用しているので、他の作業に費やした時間を判断できます。次に、各オブジェクトはこの時間でステップ実行されます。
フレームレートではなく時間に対する速度で各オブジェクトを移動できるので、これは良いことです。別のデバイスでフレームレートが異なっていても、オブジェクトは同じ速度で移動します。
あなたがこれをしていないのなら、あなたは本当にそうすべきです。ステップ関数が次のように見える場合
object.x += speed.x;
それなら本当にそうあるべき
object.x += speed.x (in units/s) * step_time (in ms) / 1000.0
これを行っている場合は、タイマーが切れたときに Runnable を実行するタイマー オブジェクトを作成するのがおそらく最善です (つまり、ステップ時間を合計し、60 秒に達したときに起動します)。