我正在用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)
如果问题没有明确表达,请告诉我.谢谢!
删除对此的调用Application.Run(),并构建自己的消息循环.例如这样:
void GameLoop()
{
while (!exitSignal)
{
Application.DoEvents();
render();
}
}
Run Code Online (Sandbox Code Playgroud)
然后你必须确保,渲染不会在那里待这么久.
有关更多信息,我建议你学习这Application门课,尤其是方法Run()和课程DoEvents().
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |