unity
runtime_error
ai_generated
true
InvalidOperationException: Cannot rebind action 'Jump' because the control 'Keyboard/space' is already bound to action 'Fire' in the same map
ID: unity/input-system-usage-conflict
90%Fix Rate
87%Confidence
1Evidence
2024-03-05First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| Unity 2022.3 | active | — | — | — |
| Unity 2023.1 | active | — | — | — |
| Input System 1.7.0 | active | — | — | — |
Root Cause
Two actions in the same Input Action Map share the same binding path, causing a conflict during runtime rebinding.
generic中文
同一输入动作映射中的两个动作共享相同的绑定路径,在运行时重新绑定时导致冲突。
Official Documentation
https://docs.unity3d.com/Packages/[email protected]/manual/ActionBindings.htmlWorkarounds
-
90% success Open the Input Action Asset in the editor, select the 'Fire' action, and change its binding path to a different key (e.g., 'Mouse/leftButton'). Then rebind 'Jump' to 'Keyboard/space'. Alternatively, use composite bindings like '1D Axis' to share controls with modifiers.
Open the Input Action Asset in the editor, select the 'Fire' action, and change its binding path to a different key (e.g., 'Mouse/leftButton'). Then rebind 'Jump' to 'Keyboard/space'. Alternatively, use composite bindings like '1D Axis' to share controls with modifiers.
-
85% success In code, before rebinding, check for conflicts using InputActionRebindingExtensions.GetBindingIndexForControl and manually unbind the conflicting action. Example: var rebind = action.ApplyBindingOverride(newBindingPath, conflicts: InputBinding.MaskByGroup("Keyboard"));
In code, before rebinding, check for conflicts using InputActionRebindingExtensions.GetBindingIndexForControl and manually unbind the conflicting action. Example: var rebind = action.ApplyBindingOverride(newBindingPath, conflicts: InputBinding.MaskByGroup("Keyboard"));
中文步骤
Open the Input Action Asset in the editor, select the 'Fire' action, and change its binding path to a different key (e.g., 'Mouse/leftButton'). Then rebind 'Jump' to 'Keyboard/space'. Alternatively, use composite bindings like '1D Axis' to share controls with modifiers.
In code, before rebinding, check for conflicts using InputActionRebindingExtensions.GetBindingIndexForControl and manually unbind the conflicting action. Example: var rebind = action.ApplyBindingOverride(newBindingPath, conflicts: InputBinding.MaskByGroup("Keyboard"));
Dead Ends
Common approaches that don't work:
-
50% fail
Disabling the conflicting action does not free the binding; the conflict persists in the asset.
-
30% fail
Deleting and recreating the action map from scratch may lose all bindings and is overkill.