0

XNA 4.0 でゲームを作成していますが、ゲームのゲーム時間をリセットする際に問題が発生します。

問題は、ゲームにオブジェクトを追加するためにこのコードを使用していることです:

Timespan prevSpawn = timespan.zero;
Timespan objectSpawnTime = timespan.fromsec(5);

if (gameTime.TotalGameTime - prevSpawn> objectSpawnTime)
        {
            prevSpawn = gameTime.TotalGameTime;
            AddObject();
        }

ゲーム時間をゼロにリセットしたいのですが、ゲームをもう一度開始するか、ゲームを終了してメインメニューに移動し、もう一度プレイすると、ゲーム時間をリセットしたいと思います。

4

2 に答える 2

2

以下の MSDN エントリからわかるように、GameTime.TotalGameTime プロパティは、ゲームまたはアプリケーション全体を終了するまで「カチカチ音をたて」続けます。

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.gametime.totalgametime.aspx

おそらく、独自のオブジェクトを使用する方が賢明でしょう。これは、任意のアクションでリセットできるため、期間をより細かく制御できます。その後、このプロパティを使用して、一方と他方の差を数えることができます。

つまり、リセット/再起動などの場合、TotalGameTime を参照してゼロにしようとするのではなく、独自のオブジェクトのタイムスパン、または (TotalGameTime - TimeWhenReset) を参照します。ここで、TimeWhenReset はリセット時に TotalGameTime からコピーされたタイムスパンです。

これは未検証ですが、正しく理解すれば動くはずだと思います。

于 2012-04-04T15:24:52.420 に答える
0

より正確なタイマーを使用するには、時間範囲と DateTime 変数を使用することをお勧めします。タイマーを開始するときに DateTime を now に設定し、TimeSpan で次のようにします。

timer = StartTime - DateTime.Now;

これにより、いつでも展開できるタイマーが提供されます。

于 2012-04-14T12:45:48.790 に答える