在相关问题中,我询问了如何通过IUP获取输入。这样可以正常工作,除了它通过系统,并且受制于对游戏不是最佳的修复率。我真正想要的是能够在给定时间获得任何键的当前状态。有没有办法(通过IUP或其他方式)?

有帮助吗?

解决方案

您可能需要将调用包装到相应的Win32 API,DirectX或lua模块中的任何内容。在IUP中捕获击键事件需要通过“正常”状态将其传递到窗口或控制。 Windows消息机制,可能不是游戏框架中的最佳方法。

您可以使用IUP计时器对象按计划运行重绘,但仍需要一种方法来收集键盘状态。如果您想使用游戏手柄,操纵杆或键盘和鼠标以外的任何HID,那么IUP在任何情况下都不会直接提供帮助。

使用编译到DLL的少量C代码可以轻松完成。

对于某些类型的API,使用 SWIG 可以相当轻松地完成。其他人将采取足够的设置/拆卸工作,更容易手工包装。

还有用于Lua的 Alien 模块,允许从纯Lua直接调用任意API。 Alien是 Lua for Windows 的一部分,也是Luaforge的项目页面的一部分。外星人本身甚至可以跨平台移植,但你没有用它来调用它。

当你追求这条道路时,要注意的是一个或多个现有的游戏引擎。通常,这些会隐藏引擎内的事件循环(就像IUP一样),但它们针对游戏构建而非桌面应用程序进行了优化。

有一些我听说过Lua邮件列表上的谣言。因为经常被提到的一个想到的是LÖVE

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top