ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Unity InputSystem按一次按键触发2次的问题(判断了InputActionPhase.Performed,NotifyUpdate和NotifyBeforeUpdate)

Unity InputSystem按一次按键触发2次的问题(判断了InputActionPhase.Performed,NotifyUpdate和NotifyBeforeUpdate) 使用Performed判断了输入阶段。public void OpenKeyMap(InputAction.CallbackContext input){ if(input.phaseInputActionPhase.Performed){ onPressMap?.Invoke(); } }两次触发打印的调用链不太一样还有一个报错Assertion failedUnityEngine.InputSystem.LowLevel.NativeInputRuntime/c__DisplayClass10_0:set_onBeforeUpdateb__0 (UnityEngineInternal.Input.NativeInputUpdateType)UnityEngineInternal.Input.NativeInputSystem:NotifyBeforeUpdate (UnityEngineInternal.Input.NativeInputUpdateType)问题发生在我们按M打开地图输入系统切换到地图模式的映射此时按M关闭地图触发了2次又直接打开了地图。我推测是触发的回调里切换了actionMap切换新的Map后还是按着的又直接判断按下了。但是打开地图时没有触发两次。看了一下是第二次被判断拦下来了试了一下打开地图也加判断还是触发2次。我们可以得出一个结论就是Performed阶段触发的操作如果里面切换ActionMap新的ActionMap还用这个函数此时还按着按键就会直接触发。但是我们这里是从Play切换到Map没问题Map到Play触发2次。然后看输入配置文件打开地图的动作看到了这个设置关闭地图的动作没有选把这个关掉问题解决了。所以Initial State Check就是刚切到这个ActionMp有按钮已经按下就触发。
返回列表