使用Stopwatch
進行高精度計時(reference)。
使用XNA的GameTime
來渲染和幀到幀定時邏輯。 XNA的計時器與「掛鐘」時間完全不符。它能夠漂移以便更好地與幀渲染對齊,從而爲您提供更流暢的動畫(這是由Game
類提供的行爲)。隨着時間的推移,它會稍微偏離實時,但對於大多數遊戲來說,這不是問題。
使用DateTime
可準確測量較長時間跨度(例如:分鐘,小時)。
注意,你不應該比較Milliseconds == 0
,因爲你無法知道什麼時候XNA會打電話給你的Update
方法,所以你可以在一幀上有Milliseconds == 999
,然後Milliseconds == 15
下一個 - 纏繞並跳過過去0 ,所以你的條件永遠不會觸發。
因此,您需要確定計時器何時超過閾值。有很多方法可以做到這一點。您可以跟蹤一個閾值(如果您正在跟蹤某個「總」時間,則有用),並在每次觸發後遞增。我個人更喜歡這樣積累時間:
seconds += gameTime.ElapsedTime.TotalSeconds;
if(seconds > 1.0)
{
seconds -= 1.0;
DoSomething(); // Triggered each second
}