1.1.0-preview.2 #
Changed
Fixed
Added
Changed
- The
submit
and thecancel
actions of the UI input module now trigger on release instead of press. This makes the behavior consistent with clicks triggering UI response on release rather than press. - Removed the old "Tanks" demo (previously available from the samples shipped with the package).
- Added a new and improved demo project, which you can download from the InputSystem_Warriors GitHub repository.
Actions
- Actions of type
InputActionType.Button
now respect button press (and release) points.- Previously, button-type actions, when used without explicit "Press" interactions, would perform immediately when a bound control was actuated.
- Now, a button-type action will behave the same as if a "Press" interaction is applied with "Trigger Behavior" set to "Press Only".
- This means that a button-type action will now perform (and perform once only) when a control crosses the button press threshold defined in the global settings or, if present, locally on a
ButtonControl
. It will then stay performed and finally cancel only when the control falls back to or below the release threshold.
InputAction.ReadValue<T>()
now always returnsdefault<T>
when the action is canceled.- This is to make it consistent with
InputAction.CallbackContext.ReadValue<T>()
which already returneddefault<T>
when the action was canceled. - In general, all APIs that read values will return default values when an action is in a phase other than
Started
orPerformed
.
- This is to make it consistent with
- If multiple actions in different action maps but in the same .inputactions asset have the same name, calling
InputActionAsset.FindAction()
with just an action name will now return the first enabled action. If none of the actions are enabled, it will return the first action with a matching name as before (case 1207550).var map1 = new InputActionMap("map1"); var map2 = new InputActionMap("map2"); map1.AddAction("actionWithSameName"); map2.AddAction("actionWithSameName"); var asset = ScriptableObject.CreateInstance<InputActionAsset>(); asset.AddActionMap(map1); asset.AddActionMap(map2); map2["actionWithSameName"].Enable(); var action = asset["actionWithSameName"]; // Before: "map1/actionWithSameName" // Now: "map2/actionWithSameName"
Fixed
- Fixed player build causing
ProjectSettings.asset
to be checked out in Perforce (case 1254502). - Fixed player build corrupting preloaded asset list in
PlayerSettings
if it was modified by another build processor. - Fixed remoting in Input Debugger not working for devices in the player that are created from generated layouts (such as XR devices).
- Fixed potential
NullReferenceException
inInputActionProperty
when theInputActionReference
isnull
. - Fixed "On-Screen Controls" sample still using
StandaloneInputModule
and thus throwingInvalidOperationException
when used with "Active Input Handling" set to "Input System Package (New)" (case 1201866). - Fixed
OnScreenButton
leaving button controls in pressed state when disabled in-between receivingOnPointerDown
andOnPointerUp
. Usually manifested itself by having to click the button twice next time it was enabled. - Fixed exiting out of play mode in the Unity Editor while a test run is in progress leading to the Input System permanently losing all its state until the editor is restarted (case 1251724).
- Fixed max values for
Axis
andDouble
controls stored as multi-bit fields being off by one (case 1223436). - Fixed debug assert in
InputDeviceTester
sample when simultaneously pressing two buttons on gamepad (case 1244988). - Fixed use of UI
Slider
causing drag thresholds to no longer work (case 1275834). - Fixed layout lists in Input Debugger not updating when removing layouts.
- Fixed device connects leading to different but similar device being reported as reconnected.
Actions
- Fixed Action with multiple bindings becoming unresponsive after a Hold interaction was performed (case 1239551).
- Fixed
NullReferenceException
whenPlayer Input
componentCreate Action
is pressed and saved (case 1245921). - Fixed
InputActionTrace.ActionEventPtr.ReadValueAsObject
leading toInvalidCastException
when trying to read values that came from composite bindings. - Fixed not being able to stack a
MultiTap
on top of aTap
(case 1261462). - Fixed rebinds triggered by the Enter key causing stuck Enter key states (case 1271591).
- Fixed
Map index on trigger
andIndexOutOfRangeException
errors when using multiple Interactions on the same Action. (case 1253034). - Fixed context menu in action editor not filtering out composites the same way that the
+
icon menu does. This led to, for example, a "2D Vector" composite being shown as an option for a button type action. - Fixed initial state checks for composite bindings failing if performed repeatedly. For example, doing a
ReadValue<Vector2>
for a WASD binding would return an incorrect value after disabling the map twice while no input from the keyboard was received (case 1274977). - Fixed "Add Interaction" menu in action editor not filtering out interactions with incompatible value types (case 1272772).
- Fixed
PlayerInput
no longer auto-switching control schemes ifneverAutoSwitchControlSchemes
was toggled off and back on after the component was first enabled (case 1232039). - Fixed action map name being the same as .inputactions asset name leading to compile errors when
Generate C# Class
is used; now leads to import error (case 1212052). - Fixed bindings not getting updated when binding by display name and there is no control with the given display name initially.
// If at the time this action is enabled, there's no ä key on the keyboard, // this did not update properly later when switched to a layout that does have the key. var action = new InputAction(binding: "<Keyboard>/#(ä)");
Added
- Added tvOS documentation entries in 'Supported Input Devices' page.
Actions
- Added "release thresholds" for buttons.
- Release points are now separated from press points by a percentage threshold.
- The threshold is defined by
InputSettings.buttonReleaseThreshold
. - Thresholds are defined as percentages of press points. A release is thus defined as a button, after having reached a value of at least
InputSettings.defaultButtonPressPoint
(or whatever local press is used), falling back to a value equal to or less thanInputSettings.buttonReleaseThreshold
percent of the press point. - This is intended to solve the problem of buttons flickering around button press points.
- The default threshold is set at 75%, that is, buttons release at 3/4 of the press point.
- Added new methods to the
InputAction
class:InputAction.IsPressed()
: Whether a bound control has crossed the press threshold and has not yet fallen back below the release threshold.InputAction.WasPressedThisFrame()
: Whether a bound control has crossed the press threshold this frame.InputAction.WasReleasedThisFrame()
: Whether a bound control has fallen back below the release threshold this frame.InputAction.WasPerformedThisFrame()
: Whether the action was performed at any point during the current frame. Equivalent toInputAction.triggered
, which will be deprecated in the future.InputAction.Reset()
: Forcibly reset the action state. Cancels the action, if it is currently in progress.
- Added
InputAction.GetTimeoutCompletionPercentage
to query the amount left to complete a currently ongoing interaction.// Let's say there's a hold interaction on a "warp" action. The user presses a button bound // to the action and then holds it. While the user holds the button, we want to know how much // longer the user will have to hold it so that we can display feedback in the UI. var holdCompleted = playerInput.actions["warp"].GetTimeoutCompletionPercentage();
- Added three new binding composite types:
OneModifierComposite
: This is a generalization ofButtonWithOneModifier
(which is still available but now hidden from the UI) which also represents bindings such as "SHIFT+1" but now can be used to target bindings other than buttons (e.g. "SHIFT+delta").TwoModifiersComposite
: This is a generalization ofButtonWithTwoModifiers
(which is still available but now hidden from the UI) which also represents bindings such as "SHIFT+CTRL+1" but now can be used to target bindings other than buttons (e.g. "SHIFT+CTRL+delta").Vector3Composite
: Works the same wayVector2Composite
does. Adds aforward
andbackward
binding in addition toup
,down
,left
, andright
.