问题描述
我在Visual Studio中使用MonoGame 3.5创建了一个monogame项目。在Linux上运行它后,mouseState.ScrollWheelValue
始终为0,无论我做什么。
这很可能与Linux在鼠标滚轮上具有不同的窗口焦点这一事实有关,但我似乎无法弄清楚。
我到目前为止发现的内容:
1。。我应该将Mouse.WindowHandle
设置为正确的值(意味着)。
这在很大程度上是有问题的,因为未实现Mouse.WindowHandle setter。另外,将特定窗口注入Mouse对象是一个内部过程。 (来源:https://stackoverflow.com/a/33921015/3455388)
2。。一个可怜的灵魂3年前在官方的单游戏论坛上问了这个问题,但没有明显的答案(https://community.monogame.net/t/mouse-state-scrollwheelvalue-returns-0-all-the-time/9233)
有人知道如何使MonoGame在Linux上接收MouseWheel事件吗?一个完全不受支持的答案也可以。
解决方法
我不知道为什么,但是解决与声音相关的其他问题也解决了鼠标问题。
最初在Linux上运行游戏时,我遇到了声音库Unhandled Exception: System.DllNotFoundException: openal32.dll
的第二个问题。我只是禁用了声音并在MouseWheel问题中进行了挖掘。
放弃鼠标问题后,我回过头来修复声音,并发现一个人在谈论/bin/Windows/Debug/
文件夹(https://github.com/MonoGame/MonoGame/issues/657)中丢失的文件。
结果是我的MonoGame bin目录仅包含OpenTK.dll
,但缺少OpenTK.dll.config
。从/usr/lib/mono/xbuild/MonoGame/v3.0/Tools/
复制它可以解决声音... 和鼠标。我猜测缺少的库可能在正确设置鼠标之前使初始化过程崩溃了。