我正在为我的游戏制作一个引擎,我有这段代码:
protected override void OnLoad(EventArgs e)
{
GameTime.stopwatch.Start();
if (GameTime.stopwatch.IsRunning)
{
GameTime.CallUpdate();
}
base.OnLoad(e);
}
如果我没有注释掉 stopwatch.Start() 或 if 语句,或者如果我只有 GameTime.CallUpdate(),则不会弹出任何应用程序窗口。我注释掉哪一个并不重要,如果两者都未注释,它就没有窗口。如果有人可以帮助我解决当我运行未注释的代码时应用程序窗口未启动的问题,请告诉我。
编辑:CallUpdate 和秒表都不是启动窗口的一部分,这增加了我的困惑
public static void CallUpdate()
{
Debug.Write("I am here");
while (stopwatch.IsRunning)
{
if (stopwatch.ElapsedMilliseconds > 120)
{
timeSinceUpdate = (int)stopwatch.ElapsedMilliseconds;
Debug.Write("Updated");
//Call update
stopwatch.Restart();
}
}
}
在
base.OnLoad(e)
返回之前,您不会致电 GameTime.CallUpdate()
。
但是
CallUpdate()
方法永远不会返回。循环一直运行,直到秒表不再运行,但没有任何东西告诉它停止。
是否有可能您不应该打电话给
stopwatch.Restart()
,而应该打电话给stopwatch.Stop()
?