我試圖在谷歌和stackoverflow上搜索這個,但我不知道該怎麼稱呼它,所以我找不到它。如何爲遊戲創建一個「循環」,每運行幾毫秒?
我該如何爲C#程序製作一個「循環」,每100毫秒運行一次?類似於Minecraft所稱的「滴答」或GameMaker所稱的「步驟」。
我不知道如何做到這一點。我正在使用visual studio,並且有一個主窗口。有些事情我想要不斷執行,所以我想弄清楚如何做一個「步驟」或「更新」功能。
我試圖在谷歌和stackoverflow上搜索這個,但我不知道該怎麼稱呼它,所以我找不到它。如何爲遊戲創建一個「循環」,每運行幾毫秒?
我該如何爲C#程序製作一個「循環」,每100毫秒運行一次?類似於Minecraft所稱的「滴答」或GameMaker所稱的「步驟」。
我不知道如何做到這一點。我正在使用visual studio,並且有一個主窗口。有些事情我想要不斷執行,所以我想弄清楚如何做一個「步驟」或「更新」功能。
「定時器」的精度對於遊戲循環來說是不夠的。它的精度是+/- 16毫秒或類似的東西。遊戲不能有這種差異。 – Servy
您可以使用定時器控件,該控件可以設置爲以給定的時間間隔打勾。 interval屬性以毫秒爲單位,因此您需要Timer1.Interval = 100;
「定時器」的精度對遊戲循環來說是不夠的。它的精度是+/- 16毫秒或類似的東西。遊戲不能有這種差異。 – Servy
如果你希望它運行100毫秒,你會做這個
System.Timers.Timer timer = new System.Timers.Timer(100);
public void Initialize(object sender, EventArgs e)
{
timer.Elapsed+=Elapsed;
}
public void Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//do stuff
}
別的東西,你可以做的,但是我不認爲這是一個高效
using System.Threading;
Thread th = new Thread(new ThreadStart(delegate
{
while (true)
{
Thread.Sleep(100);
//do stuff
}
}));
或者,你可以下載monogame使在C#中更復雜的遊戲
它擁有自己的gameTime控件。
使用'while'和['Timer'](http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx)? – Default
你應該使用某種遊戲設計框架來爲你提供這個。你不是嗎? – Servy
您可以使用XNA,它具有爲此目的而創建的更新和繪製方法。但我認爲XNA已經死了,你也可以看看MonoGame。 –