public float GetAxis()
{
if (inputDevice == InputDevice.MouseKeyboard)
{
return Input.GetAxis(this.buttonName);
}
}
此代码在我的Windows 7 x64 PC上运行良好。我的项目输入设置为顺序:
输入设置:
但是我在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();
}
答案 0 :(得分:0)
我在使用RDP会话或某种远程查看器(例如TeamViewer)时遇到了这个问题。鼠标X和鼠标Y直接从设备读取输出。如果未将设备直接插入正在运行播放器的机器,则将无法正确检索输入。我不确定这是否适合您,但这是我能想到的唯一一个没有被发现的实例。
也许您应该添加一些代码来获取每帧鼠标的位置并输出差异,否则无论如何都会绕过鼠标X / Y输入。
答案 1 :(得分:0)
更新。这不是错误。我只是在项目中错过了一些东西。 我有一个脚本来控制鼠标控制的摄像机的速度,并通过PlayerPrefs变量对其进行更改。而且,在某些情况下,该变量被设置为0。但就我而言,它已被设置为注册表,并且在我的PC上一切正常。 也许我需要删除此问题,因为它没有提供足够的数据。
我发现了这个thread at unity forum,有些人在具有不同Unity版本和不同鼠标驱动程序的真实Windows PC上遇到了相同的问题。 这是一个古老的Unity硬件兼容性错误。看起来无法解决,除非升级Unity或使用其他输入系统。