1.3.0 #
Changed
Fixed
Changed
- The artificial
ctrl
,shift
, andalt
controls (which combine the left and right controls into one) on the keyboard can now be written to and no longer throwNotSupportedException
when trying to do so (case 1340793). - All devices are now re-synced/reset in next update after entering play mode, this is needed to read current state of devices before any intentional input is provided (case 1231907).
- Replaced
UnityLinkerBuildPipelineData.inputDirectory
with hardcodedTemp
folder becauseinputDirectory
is deprecated. - Deprecated
InputSettings.filterNoiseOnCurrent
. Now noise filtering is always enabled. Device only will become.current
if any non-noise control have changed state. - A device reset (such as when focus is lost) on
Touchscreen
will now result in all ongoing touches getting cancelled instead of all touches being simply reset to default state. - Calling
InputTestFixture.Press
,InputTestFixture.Set
, etc. from within a[UnityTest]
will no longer immediately process input. Instead, input will be processed like it normally would as part of the Unity player loop.
Fixed
- Fixed writing values into the half-axis controls of sticks (such as
Gamepad.leftStick.left
) producing incorrect values on the stick (case 1336240). - Fixed setting size of event trace in input debugger always growing back to largest size set before.
- Fixed successive clicks not getting triggered with
TouchSimulation
on when not moving the mouse in-between clicks (case 1330014). - Fixed
InputSystemUIInputModule
stopping to listen for input when swappingInputActionAsset
instances while input was disabled (case 1371332). - Fixed
InputSystemUIInputModule
showing incorrect bindings after pressing the 'Fix UI Input Module' button in PlayerInput component(case 1319968). - Fixed an issue where UI button clicks could be ignored by
InputSystemUIInputModule
if modifying on-screen devices from Update() callbacks (case 1365070). - Fixed an issue with
InputSystemUIInputModule
that would cause UI to stop responding during play mode after changing a script file while Recompile and Continue mode is active, or by forcing a script recompile usingRequestScriptCompilation
(case 1324215). - Fixed
InputSystemUIInputModule
inspector showing all action bindings as "None" when assigned a runtime created actions asset (case 1304943). - Fixed a problem with UI Toolkit buttons remaining active when multiple fingers are used on a touchscreen, using
InputSystemUIInputModule
with pointerBehavior set toUIPointerBehavior.SingleUnifiedPointer
. UI Toolkit will now always receive the same pointerId when that option is in use, regardless of the hardware component that produced the pointer event. (case 1369081). - Fixed a problem with
InputUser
where devices would be removed and not added again after layout overrides preventing certain devices, e.g. gamepads to not work correctly when associated with action map bindings tied toPlayerInput
(case 1347320). - Fixed DualSense on iOS not inheriting from
DualShockGamepad
(case 1378308). - Fixed a device becoming
.current
(e.g.Gamepad.current
, etc) when sending a new state event that contains no control changes (case 1377952). - Fixed calling
IsPressed
on an entire device returningtrue
(case 1374024). - Fixed HIDs having blackslashes in their vendor or product names leading to binding paths generated by interactive rebinding that failed to resolve to controls and thus lead to no input being received (case 1335465).
- Fixed
InputSystem.RegisterLayoutOverride
resulting in the layout that overrides are being applied to losing the connection to its base layout (case 1377719). - Fixed
Touch.activeTouches
still registering touches after the app loses focus (case 1364017). - Fixed
MultiplayerEventSystem
not preventing keyboard and gamepad/joystick navigation from one player's UI moving to another player's UI (case 1306361).- This fix relies on a
CanvasGroup
being injected into eachplayerRoot
and theinteractable
property of the group being toggled back and forth depending on which part of the UI is being updated.
- This fix relies on a
- Fixed
InputTestFixture
incorrectly running input updates out of sync with the player loop (case 1341740).- This had effects such as
InputAction.WasPressedThisFrame()
returning false expectedly.
- This had effects such as
- Fixed broken code example for state structs in
Devices.md
documentation (fix contributed by jeffreylanters). - Fixed
TrackedDeviceRaycaster
not picking closest hit in scene (fix originally contributed by alexboost222).
Actions
- Fixed opening a new project (or one that needs a full reimport) leading to several exceptions in the console if the most recently opened project was closed with a
.inputactions
editor open (case 1313185). - Fixed incorrect indentation of input actions in the inspector (case 1285546).
- Fixed an issue where serialized
InputAction
properties would have display name "Input Action" in the Inspector window instead of their given name. (case 1367240). - Fixed an issue where
InputAction.Enable
would not reuse memory allocated prior and thus lead to memory leaks (case 1367442). - Fixed interactions such as
Press
not getting processed correctly when having multiple of them on different bindings of the same action and receiving simultaneous input on all of them (case 1364667).- If, for example, you bind the A and S key on the same action, put a
Press
interaction on both, and then press both keys, interactions would get missed or got stuck.
- If, for example, you bind the A and S key on the same action, put a
- Fixed
InputAction.IsPressed
/WasPressed
/WasReleased
returning incorrect results when binding multiple buttons on the same action and pressing/releasing them simultaneously. - Improved performance of looking up actions by name.
- Fixed
InputAction.controls
exhibiting bad performance when there were no controls bound to an action (case 1347829). - Fixed interactions involving timeouts (such as
HoldInteraction
) performing erroneous delayed triggers on actions when input is composed of multiple controls (1251231).- For example, if you bind
Shift+B
using aOneModifierComposite
and put aHoldInteraction
on the binding, then depending on the order in which the keys are pressed, you would sometimes see the action spuriously getting triggered when in fact no input was received.
- For example, if you bind
- Fixed control schemes of bindings not getting updates when being pasted from one
.inputactions
asset into another (case 1276106).- For example, if you copied a binding from an asset that had a "Gamepad" control scheme into an asset that had none, the resulting binding would be unusable.
- All associations with control schemes that do not exist in the target asset are now removed from bindings upon pasting.
- Fixed
InputActionSetupExtensions.AddCompositeBinding
not setting name of composite.