Input.GetAxis(“ Mouse X”)在某些Windows配置上不起作用

时间:2019-01-17 09:24:20

标签: windows unity3d

public float GetAxis() 
{
    if (inputDevice == InputDevice.MouseKeyboard)
    {
        return Input.GetAxis(this.buttonName);
    }
}

此代码在我的Windows 7 x64 PC上运行良好。我的项目输入设置为顺序:

输入设置:

enter image description here

但是我在youtube上观看了一些人们在玩我的游戏的视频。而且他们不能在其中使用鼠标。 Input.GetAxis("Mouse X")Input.GetAxis("Mouse Y")似乎没有为其返回正确的值,因此它们无法控制游戏中的摄影机。

其他输入对他们来说很好用。 我的Unity版本是5.6.0f3,由于游戏代码太复杂,我无法升级到实际版本。

如何进行故障排除和修复?除了Windows x86和x64,我还没有为其他平台构建。

构造输入对象:

public GenericInput rotateCameraXInput = new GenericInput("Mouse X", "RightAnalogHorizontal");

要读取鼠标的增量运动,请在LateUpdate()中运行此方法:

protected virtual void CameraInput()
{
    if (tpCamera == null || cc.lockCamera)
    return;
    var Y = rotateCameraYInput.GetAxis();
    var X = rotateCameraXInput.GetAxis();
}

2 个答案:

答案 0 :(得分:0)

我在使用RDP会话或某种远程查看器(例如TeamViewer)时遇到了这个问题。鼠标X和鼠标Y直接从设备读取输出。如果未将设备直接插入正在运行播放器的机器,则将无法正确检索输入。我不确定这是否适合您,但这是我能想到的唯一一个没有被发现的实例。

也许您应该添加一些代码来获取每帧鼠标的位置并输出差异,否则无论如何都会绕过鼠标X / Y输入。

答案 1 :(得分:0)

更新。这不是错误。我只是在项目中错过了一些东西。 我有一个脚本来控制鼠标控制的摄像机的速度,并通过PlayerPrefs变量对其进行更改。而且,在某些情况下,该变量被设置为0。但就我而言,它已被设置为注册表,并且在我的PC上一切正常。 也许我需要删除此问题,因为它没有提供足够的数据。

我发现了这个thread at unity forum,有些人在具有不同Unity版本和不同鼠标驱动程序的真实Windows PC上遇到了相同的问题。 这是一个古老的Unity硬件兼容性错误。看起来无法解决,除非升级Unity或使用其他输入系统。