Stopwatch
高精度のタイミングに使用します (参考)。
GameTime
レンダリングとフレーム間のタイミング ロジックにはXNA を使用します。XNA のタイマーは、「壁時計」の時間と正確に一致しません。フレーム レンダリングとの整合性を高めるためにドリフトすることができ、よりスムーズなアニメーションが得られます (これはGame
クラスによって提供される動作です)。時間の経過とともに、リアルタイムからわずかにずれますが、ほとんどのゲームではこれは問題になりません。
DateTime
より長い時間スパンを正確に測定するために使用します (例: 分、時間)。
XNA がいつメソッドMilliseconds == 0
を呼び出すかを正確に知ることができないため、を比較するべきではないことに注意してください。そのため、1 つのフレームで、次に次のフレームでラップアラウンドして 0 を超えてスキップすることができるため、条件がトリガーされることはありません。Update
Milliseconds == 999
Milliseconds == 15
そのため、タイマーがいつしきい値を超えるかを判断する必要があります。これを行うには多くの方法があります。しきい値を追跡して (「合計」時間を追跡する場合に便利です)、各トリガーの後に増分することができます。個人的には、次のように時間を蓄積することを好みます。
seconds += gameTime.ElapsedTime.TotalSeconds;
if(seconds > 1.0)
{
seconds -= 1.0;
DoSomething(); // Triggered each second
}