仅在C#中的特定时间触发事件

fyh*_*ang 2 c# events opentk

我正在用C#编写一个视频游戏,我想只在游戏循环的特定点处理某些事件(例如键盘/鼠标事件).例如,有没有办法写出如下内容:

void gameLoop()
{
    // do updates
    handleAllEvents();
    render();
}
Run Code Online (Sandbox Code Playgroud)

如果事件发生在循环中的某个其他点,我想等到handleAllEvents()处理它们."事件"我的意思是标准的C#事件系统,例如:

public event Action<object, KeyboardEventArgs> KeyPressed;
Run Code Online (Sandbox Code Playgroud)

如果问题没有明确表达,请告诉我.谢谢!

Zok*_*oka 5

删除对此的调用Application.Run(),并构建自己的消息循环.例如这样:

void GameLoop()
{
      while (!exitSignal)
      {
          Application.DoEvents();
          render();
      }
}
Run Code Online (Sandbox Code Playgroud)

然后你必须确保,渲染不会在那里待这么久.

有关更多信息,我建议你学习这Application门课,尤其是方法Run()和课程DoEvents().