5 回答
TA贡献1712条经验 获得超3个赞
您可能尝试导入新的输入系统包以实现多个输入设备的兼容性。这些类型的错误是由于新旧输入系统包之间的冲突造成的,并且可能在最新的更新中得到解决。
要解决此问题,请转到“编辑” -> “项目设置” -> “播放器”-> “配置”下的“其他设置”下的“活动输入处理”选项。选择两者。Unity 将重新启动。现在你的问题应该解决了。您将能够同时使用旧的输入系统包和新的输入系统包。
TA贡献1797条经验 获得超4个赞
在输入调试器中检查是否存在恶意用户
我有非常相似的症状(输入系统会随机停止发送回调)。当我打开输入调试器时,它正在注册按键,但我的脚本中从未调用回调。
重新启动 Unity 没有帮助。重新启动没有帮助。
我还在输入调试器中发现输入系统中有 2 个“用户”,并且(通过一次禁用场景中一个游戏对象的过程)发现我不小心将输入动作资源的另一个副本附加到场景中的另一个游戏对象,并且 Unity 将此另一个对象注册为第二个玩家或“用户”,它被分配了我试图捕获的所有输入动作绑定。
流氓操作资产本质上是拦截操作,防止在预期脚本上调用回调。我不知道这是否是您的特定问题,但也许它会帮助其他人(像我一样)花费数小时浏览论坛,寻找解决这个难以捉摸的问题的方法。
判断您是否遇到相同问题的一个简单方法是打开输入调试器并查看所需的操作是否实际映射到感兴趣的用户。
输入调试器的屏幕剪辑:
对我来说,有一个意外的用户#1,并且只有一个用户(不是预期的用户)实际上拥有绑定到所需操作的密钥
TA贡献1805条经验 获得超9个赞
发布以防其他人遇到这个问题,因为这解决了我的问题。确保调用 Enable() 来启动路由事件。
//Create a and set the reference
private InputControls _inputMapping;
private void Awake() => _inputMapping = new InputControls();
//Route and Un-route events
private void OnEnable() => _inputMapping.Enable();
private void OnDisable() => _inputMapping.Disable();
TA贡献1817条经验 获得超14个赞
我遇到了类似的问题,完全按照问题中描述的步骤重现。就我而言,我忘记设置控制方案。
添加后问题就解决了。
为此:
打开您的输入操作资产。
在左上角选择一个控制方案。(例如,键盘)(如果您一开始就没有添加控制方案,您的问题可能与我的不同)
右键单击> 编辑控制方案。
单击加号将控制方案添加到列表中。
选择您要添加的控制方案。(在本例中为键盘)
你已经准备好了。保存所有内容,问题就应该得到解决。
玩你的游戏,它应该可以工作。
TA贡献1796条经验 获得超7个赞
我不知道这是否对你有用,但它对我有用,而且我也遇到了同样的问题。
我创建了 2 个控制方案。手机和电脑。移动设备需要触摸屏,PC 需要键盘和鼠标。这样做使我的移动输入事件停止触发。因此,将游戏手柄添加到我的移动控制方案中可以让事件再次触发。
太长了。检查您的控制方案,确保它允许您绑定的输入。
- 5 回答
- 0 关注
- 146 浏览
添加回答
举报