Hi. I must be doing something wrong. When I rebind an action using my keyboard/mouse, it works just fine. When I rebind any action to any other action using a gamepad I get this error:
Assertion failed
UnityEngine.InputSystem.LowLevel.NativeInputRuntime/<>c__DisplayClass10_0:<set_onBeforeUpdate>b__0 (UnityEngineInternal.Input.NativeInputUpdateType)
UnityEngineInternal.Input.NativeInputSystem:NotifyBeforeUpdate (UnityEngineInternal.Input.NativeInputUpdateType)"
Here is my rebinding code. To be honest, I’m not completely sure how this works.
InputActionRebindingExtensions.RebindingOperation rebindingOperation;
protected override void StartRebind()
{
// Disable the action we are rebinding.
InputAction action = CurrentSelectionData;
action.Disable();
// "controls" is the instance of my generated C# class Input Action Asset.
controls.Disable();
if (userInputData.ControlScheme.Name == "Gamepad")
{
rebindingOperation = action.PerformInteractiveRebinding()
.WithControlsExcluding("Keyboard")
.WithControlsExcluding("Mouse")
.WithCancelingThrough("<Keyboard>/escape")
.OnMatchWaitForAnother(0.1f)
.OnComplete(operation => RebindComplete(action, "Gamepad"))
.OnCancel(operation => RebindComplete(action, "Gamepad"))
.Start();
}
else
{
rebindingOperation = action.PerformInteractiveRebinding()
.WithControlsExcluding("<Gamepad>")
.WithCancelingThrough("<Keyboard>/escape")
.OnMatchWaitForAnother(0.1f)
.OnComplete(operation => RebindComplete(action, "Keyboard&Mouse"))
.OnCancel(operation => RebindComplete(action, "Keyboard&Mouse"))
.Start();
}
// Display that we are waiting for an input...
CurrentChoice.ChoiceUI.Disable();
CurrentChoice.ChoiceUI.SetText("awaiting input..");
}
Any notes? Anything helps, really. Thanks in advance.