Search Issue Tracker
Fixed in 1.1.0-preview.4
Votes
2
Found in [Package]
1.0-preview
Issue ID
1190502
Regression
No
[InputSystem] Runtime rebinds are leaking into .inputactions asset
User description:
I've tried this again with the latest version that is currently available to download from within Unity
0.9.4-preview.
When following my reproduction steps, I was still able to leak the new input actions onto the .inputactions asset. Even during runtime.
Simply use the code from the example above, although you do have to disable the InputAction actionToUse before you setup and start the rebind operation.
During runtime rebind a key using the previous example With the .inputactions asset window open.
After having remapped a new button, close the .inputactions asset and reopen it again using the Edit asset button.
Notice that the button you pressed now shows up in the .inputactions asset.
Are you still seeing this issue as of 0.9.3? We had a bug where rebinds didn't trigger re-resolving of bindings and thus wouldn't take effect immediately. This has since been fixed.
While the rebind does register into the .inputactions asset. I'm unable to use the newly added key to trigger my debug code. Is there a step I seem to be missing?
In the example gif below. I start off by showcasing my current input actions. I then press the UI button with the name F. Immediately afterwards, I press the A button on my keyboard (sorry, don't have visuals for that). I then close the .inputactions asset. Only to then reopen it. As you can see in the example gif, the newly bound input action was leaked into the .inputactions` asset.
image
Code used:
public void RequestNewBinding() {
InputAction actionToUse = inputActions.actionMaps[0].actions[0];
inputActions.Disable();
actionToUse.Disable();
rebindOperation = actionToUse.PerformInteractiveRebinding().WithRebindAddingNewBinding()
.OnComplete(operation => {
actionToUse.Enable();
inputActions.Enable();
ButtonRebindCompleted(GetComponent<Button>());
})
.Start();
}
private void ButtonRebindCompleted(Button uiButton) {
rebindOperation.Dispose();
buttonText.text = controls.TestMap.Newaction.controls[controls.TestMap.Newaction.controls.Count - 1].displayName;
controls.TestMap.Enable();
}
The rest of the code is still the same as in the original example.
------------
Rene notes: We're indeed performing any destructive operation right on the imported asset instance. Need to solve that. Besides that, there shouldn't be any leaking from there back to the source asset, though. Not sure that is happening here but if it is, that is probably also a problem.
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- var VisionOSEDRHeadromm has a comma instead of a dot when building with Metal Rendering App Mode and local OS localization is set to German
- IAP Catalog remove product “x” and add product “+” buttons are not consistent with other remove and add buttons in the Editor
- Performance issues in Play Mode when quickly hovering the mouse cursor over Hierarchy GameObjects
- Frame Debugger displays incorrect output when FidelityFX Super Resolution or Spatial-Temporal Upscaler is used with Temporal Anti-aliasing or Subpixel Morphological Anti-aliasing
- The layout system is failing to correctly calculate or apply the height of the Japanese fallback font when the primary English font's metrics are used
Add comment