Search Issue Tracker
By Design
By Design in 1.14.X
Votes
1
Found in [Package]
1.14.0
Issue ID
ISXB-1528
Regression
No
The New Input System is not detecting clicks when under heavy load
Reproduction steps:
1. Open the attached project "ReproProj"
2. Open the "/Assets/Scenes/Main.unity" Scene
3. Enter the Play Mode
4. Fast click "W","A","S" and "D" keys
Expected result: Only the green circle is present
Actual result: Red and green circles are present
Reproducible with: 1.11.2 (2022.3.60f1), 1.14.0 (2022.3.61f1, 6000.0.47f1, 6000.1.0b15, 6000.2.0a9)
Reproducible on:
Play Mode
Windows Standalone Player
Testing environment: Windows 10 Enterprise 21H2
Not reproducible on: No other environment tested
Notes:
- The red circle is the New Input System
- The green circle is the Old Input System
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Texture Import Warnings are obscured by other Terrain Layer options in the Inspector
- Burst Inspector middle divider is jittering when resized with the Burst Inspector window docked
- JsonConvert conversion fails trying to call GetCallbackMethodsForType when [OnDeserialized] is used in a class
- Different text alignment in the column header in Entities "System" window
- Objects with Universal Render Pipeline/Particles/Lit shader are always lit up when changing their Rendering Layer Mask
Resolution Note:
The current implementation in the input system is by design.
You can however achieve similar results if they would like to receive input under load.
I investigated the issue and the project you provided quite thoroughly.
This is not a bug and rather a feature of the old input manager that we do not want to have in the new input system.
If you want to have similar behavior in the input system you can listen for events instead as these provide the delta change.
Example:
m_Controls.gameplay.move.performed += (callbackContext) => Sum(callbackContext.ReadValue<Vector2>());
This will allow for similar movement when quick tapping.
Doc’s here:
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.5/manual/Actions.html#using-actions
The old input manager used to cache keyboard quick presses, to know if it was pressed this frame and then applied the keypress once the frame had finished, we don’t want this approach in the new system as there are other ways to achieve this.
If you compare both the input manager and input system with a gamepad or mouse you in the demo project you will see they act similarly. Just for key presses they differ due to the old input system caching.
Other doc’s that may be useful for you:
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.2/api/UnityEngine.InputSystem.InputAction.html#UnityEngine_InputSys[…]_WasPressedThisFrame
I hope this helps!
Darren
Resolution Note (1.14.X):
The current implementation in the input system is by design.
You can however achieve similar results if they would like to receive input under load.
I investigated the issue and the project you provided quite thoroughly.
This is not a bug and rather a feature of the old input manager that we do not want to have in the new input system.
If you want to have similar behavior in the input system you can listen for events instead as these provide the delta change.
Example:
m_Controls.gameplay.move.performed += (callbackContext) => Sum(callbackContext.ReadValue<Vector2>());
This will allow for similar movement when quick tapping.
Doc’s here:
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.5/manual/Actions.html#using-actions
The old input manager used to cache keyboard quick presses, to know if it was pressed this frame and then applied the keypress once the frame had finished, we don’t want this approach in the new system as there are other ways to achieve this.
If you compare both the input manager and input system with a gamepad or mouse you in the demo project you will see they act similarly. Just for key presses they differ due to the old input system caching.
Other doc’s that may be useful for you:
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.2/api/UnityEngine.InputSystem.InputAction.html#UnityEngine_InputSys[…]_WasPressedThisFrame
I hope this helps!
Darren