这是有史以来最不寻常的错误!
我正在使用 XNA(Monogame)并使用以下代码获取鼠标状态:
Mousestate ms = Mouse.GetState();
然后我可以使用以下内容检查点击次数:
if(ms.RightButton == ButtonState.Pressed)
{
}
或者通过设置上一个滚动变量检查滚动并将其与当前滚动进行比较。
一切都运行良好,直到我今天在我的系统上工作,我测试了它,并且所有鼠标交互都停止了工作。但键盘状态确实有效。
我认为可能是因为它没有被调用或没有被检查。
所以我放置这是我的工作更新方法。
if (ms.LeftButton == ButtonState.Pressed)
{
throw new NullRefrenceException();
}
我试过左键点击,什么都没发生。通过删除if语句确保它不是别的东西,并且确实它确实扔了它。
因此,在绝望之后,我创建了一个 Windows Mono-game Proj 并将相同的代码放入更新方法中。
我点击了鼠标左键,错误确定无误。
我试过注释掉每一行代码都有ms / mouseState / Mouse。只留下一个,但无济于事。
我会创建一个Minimal, Complete, and Verifiable Example,但我的项目非常大,我已经在超过30个类中声明了鼠标状态。
我尝试重新启动计算机,重新启动visual-studio,结束所有vs / vs-host进程,使用不同的鼠标和大量代码进行调整。
当我尝试在鼠标状态附近使用断点时,不会抛出任何错误,它不会设置为null。
如果此问题需要进一步的信息,请说明。
答案 0 :(得分:0)
好。如果你初始化Game1。
Game1 g1 = new Game1();
它会破坏mouseState。
如果一个类扩展:Microsoft.Xna.Framework.Game
并使用其方法。如果再次初始化它将会中断。
不应该初始化Game1。