我在MacOS上使用MonoGame 3.6.0.906 . 我试图让一些鼠标输入代码工作,但我发现了一些奇怪的行为 . 按下左键时,鼠标位置似乎不会更新 . 这使得无法实现鼠标拖动输入 .

为了研究,我在按下鼠标左键,释放时间和每次更新时鼠标位置时添加了打印语句 . 然后我尝试点击并拖动 . 当左按钮关闭时鼠标肯定会移动 .

这是日志:

...
{X:89 Y:384}
{X:89 Y:385}
{X:90 Y:386}
pressed
released
{X:91 Y:386}
{X:94 Y:386}
{X:96 Y:386}
...

可以看出,当左按钮关闭时,鼠标位置不会改变 .

为什么是这样?这是MonoGame中的错误吗?


重要的代码:

MouseState previousMouseState;

    protected override void Update(GameTime gameTime)
    {
        var mouseState = Mouse.GetState();

        if (mouseState.LeftButton == ButtonState.Pressed && 
            previousMouseState.LeftButton == ButtonState.Released)
        {
            Console.WriteLine("pressed");
        }

        if (mouseState.LeftButton == ButtonState.Released && 
            previousMouseState.LeftButton == ButtonState.Pressed)
        {
            Console.WriteLine("released");
        }

        if (mouseState.Position != previousMouseState.Position)
        {
            Console.WriteLine(mouseState.Position);
        }

        previousMouseState = mouseState;

        base.Update(gameTime);
    }

Update 我刚刚在MonoMac应用程序中对此进行了测试,它运行正常 . 使用跨平台桌面模板,Xamarin Mac模板和Xamarin Classic模板时会出现此问题 .