我正在开发使用轮询输入法的游戏。但是,既然我正在更深入地研究游戏菜单和其他UI组件,我发现我可能想拥有事件驱动的输入。甚至可以同时使用事件驱动的UI和轮询的“世界”输入。我对最好的方式是很好奇。
我将轮询定义为:每个更新循环都检查按下了哪些键,鼠标在哪里,按下了按钮,然后遍历它们并根据收集到的信息执行操作。
我将事件驱动定义为:基于中断的事件,当事件发生并触发中断并基于该事件运行代码块时。
您是否认为最好进行所有事件驱动,全部轮询,或者两者都可以接受?如果您有两者的优缺点,请列出。谢谢。
编辑
该游戏基于Java / OpenGL,因此将发布到Windows / Mac / Linux。将其扩展到移动设备的可能性很小。游戏是RTS风格的第三人称3D。
编辑2
我对实现此方法的方式仍然不完全满意,但是我要转向的是在UI中捕获事件,如果事件未由我的任何UI组件处理,我会将事件传递给用于选择的“世界”。就像是:
@Override
private boolean handleEvent(Event event) {
if(hud.handleEvent(event)) {
return true;
}
return WORLD.handleEvent(event);
}
这样,我不会从用户界面中泄漏点击以选择按钮后面的对象,而不是其他。
目前,我的摄像头控件仍然基于轮询,并且目前似乎可以正常使用,但稍后可能会进行更新。
我感谢所有答案,对不起,我只能选择其中一个!