1.1.0-pre.4 #
Changed
Fixed
Added
Changed
- The
VirtualMouseInput
component is now part of the Input System assembly. It was previously packaged with theGamepad Mouse Cursor
sample.- The component has a different GUID from before, so existing setups that use the component from the sample are not broken. To use the built-in component you must explicitly switch over.
InputTestFixture
no longer deletes theGameObject
s in the current scene in itsTearDown
(case 1286987).- This was added for the sake of the Input System's own tests but should not have been in the public fixture.
- Generic
Gamepad
now has platform independent long button names. Previously it used different names if editor targeted PS4/Switch consoles (case 1321676). - When creating a new control scheme with a name
All Control Schemes
,All Control Schemes1
will be created to avoid confusion with implicitAll Control Schemes
scheme (case 1217379). - Display names of keyboard buttons are now passed through
ToLower
andToTitleCase
to enforce consistent casing between different platforms and keyboard layouts (case 1254705). - Editor: All remaining
InputUser
instances are now removed automatically when exiting play mode. This means that all devices are automatically unpaired.- In essence, like
InputAction
,InputUser
is now considered a player-only feature.
- In essence, like
- Events queued during event processing (i.e.
InputSystem.Update()
) are now processed in the same frame. This eliminates the 1-frame lag previously incurred by simulated input.- Note that this does not extend to input queued outside of event processing but in the same frame. For example, input queued by the UI (such as by
OnScreenButton
andOnScreenStick
) will still see a 1-frame lag as UI event processing happens later in the frame and outside of input event processing.
- Note that this does not extend to input queued outside of event processing but in the same frame. For example, input queued by the UI (such as by
Actions
- When removing/unplugging a device, it will now also be removed from the device list of
InputActionMap.devices
andInputActionAsset.devices
.var gamepad = InputSystem.AddDevice<Gamepad>(); var actions = new MyGeneratedActions(); actions.devices = new[] { gamepad }; InputSystem.RemoveDevice(gamepad); // `actions.devices` is now an empty array.
- Adding an action to a
InputActionMap
that is part of anInputActionAsset
now requires all actions in the asset to be disabled (case 1288335).- This used to trigger an
Assert
at runtime but now properly throws anInvalidOperationException
.
- This used to trigger an
Fixed
- Fixed inputs in game view sometimes not working when running in the editor, as initial focus state could end up being incorrect.
- Fixed bad performance in Input Debugger with high-frequency devices (e.g. 1+ KHz gaming mice). Before, high event volumes led to excessive refreshes of debugger data.
- Fixed compile error on tvOS due to step counter support for iOS added in
1.1.0-preview.3
. - Fixed PS4- and PS3-specific
rightTriggerButton
andleftTriggerButton
controls not being marked as synthetic and thus conflicting withrightTrigger
andleftTrigger
input (case 1293734).- This manifested itself, for example, when using interactive rebinding and seeing
rightTriggerButton
getting picked instead of the expectedrightTrigger
control.
- This manifested itself, for example, when using interactive rebinding and seeing
- Fixed changes to usages of devices in remote player not being reflected in Input Debugger.
- Fixed exceptions and incorrect values with HIDs using 32-bit fields (case 1189859).
- This happened, for example, with vJoy installed.
- Fixed
InputUser
no longer sendingInputUserChange.ControlsChanged
when adding a new user after previously, all users were removed.- Fix contributed by Sven Herrmann in 1292.
- Fixed
AxisDeadzoneProcessor
min/max values not being settable to 0 in editor UI (case 1293744). - Fixed blurry icons in input debugger, asset editor, input settings (case 1299595).
- Fixed
clickCount
not being incremented correctly byInputSystemUIInputModule
for successive mouse clicks (case 1317239). - Fixed UI not working after additively loading scenes with additional InputSystemUIInputModule modules (case 1251720).
- Fixed no
OnPointerExit
received when changing UI state without moving pointer (case 1232705). - Fixed reference to
.inputactions
ofPlayer Prefab
referenced byPlayerInputManager
being destroyed on going into play mode, if the player prefab was a nested prefab (case 1319756). - Fixed "Scheme Name" label clipped in "Add Control Schema" popup window ([case 1199560]https://issuetracker.unity3d.com/issues/themes-input-system-scheme-name-is-clipped-in-add-control-schema-window-with-inter-default-font)).
- Fixed
InputSystem.QueueEvent
calls from withinInputAction
callbacks getting dropped entirely (case 1297339). - Fixed
InputSystemUIInputModule
being in invalid state when added fromAwake
to a game object when entering playmode (case 1323566). - Fixed
Keyboard.current
becomingnull
afterOnScreenButton
is disabled or destroyed (case 1305016).
Actions
- Fixed rebinding not working for any discrete control that was held when the rebinding operation started (case 1317225).
- Fixed bindings being added to every InputAction in a collection when editing a collection of InputActions in the inspector. (case 1258578)
- Fixed
Retrieving array element that was out of bounds
andSerializedProperty ... has disappeared!
errors when deleting multiple action bindings in the input asset editor (case 1300506). - Fixed delete key not working in the input actions editor (case 1282090).
- Fixed actions embedded into
MonoBehaviours
not showing bindings added directly from within constructors (case 1291334).public class MyMB : MonoBehaviour { // This would end up not showing the binding in the inspector. public InputAction action = new InputAction(binding: "<Gamepad>/leftStick");
- Fixed tooltips not appearing for elements of the Input Actions editor window (case 1311595).
- Fixed
NullReferenceException
when reading values throughInputAction.CallbackContext
on aOneModifierComposite
orTwoModifierComposite
binding. - Fixed multi-taps not working when multiple controls were bound to an action (case 1267805).
- When there were multiple controls bound to an action, this bug would get triggered by any interaction that did not result in a phase change on the action.
- Fixed runtime rebinds added as new bindings from leaking into .inputactions assets when exiting play mode (case 1190502)
- Fixed
IndexOutOfRangeException
andnull
elements inInputUser.lostDevices
when anInputUser
loses a devices from a control scheme with only optional devices (case 1275148). - Fixed binding path selection windows not remembering navigation state when going up through hierarchy (case 1254981).
Added
- Support for Device Simulator touchscreen input.
- Enabled XR device support on Magic Leap (Lumin).
- Added ability to force XR Support in a project by defining
UNITY_INPUT_FORCE_XR_PLUGIN
. - Added a warning message to PlayerInputManager editor when the attached input action asset won't work with Join Players When Button Is Pressed behaviour due to missing control scheme device requirements (case 1265853).
- Added support for UI Toolkit with Unity 2021.1+.
- UITK is now supported as a UI solution in players. Input support for both Unity UI and UI Toolkit is based on the same
InputSystemUIInputModule
code path. More details in the manual.
- UITK is now supported as a UI solution in players. Input support for both Unity UI and UI Toolkit is based on the same
InputSystemUIInputModule
now has anxrTrackingOrigin
property. When assigned, this will transform all tracked device positions and rotations from it's local space into Unity's world space (case 1308480).- Added
InputSystemUIInputModule.GetLastRaycastResult
. This returns the most recent raycast result and can be used to draw ray visualizations or get information on the most recent UI object hit. - Added
InputStateBlock
support forkFormatSBit
when working with floats (case 1258003). - Added an API to parse control paths.
var parsed = InputControlPath.Parse("<XRController>{LeftHand}/trigger").ToArray(); Debug.Log(parsed.Length); // Prints 2. Debug.Log(parsed[0].layout); // Prints "XRController". Debug.Log(parsed[0].name); // Prints an empty string. Debug.Log(parsed[0].usages.First()); // Prints "LeftHand". Debug.Log(parsed[1].layout); // Prints null. Debug.Log(parsed[1].name); // Prints "trigger".
- Can, for example, be used with
InputBinding.path
.
- Can, for example, be used with
- Added a new API-only setting in the form of
InputSystem.settings.maxEventBytesPerUpdate
.- Puts an upper limit on the number of event bytes processed in a single update.
- If exceeded, any additional event data will get thrown away and an error will be issued.
- Set to 5MB by default.
- Added a new API-only setting called
InputSystem.settings.maxQueuedEventsPerUpdate
.- This limits the number of events that can be queued during event processing using the
InputSystem.QueueEvent
method. This guards against infinite loops in the case where an action callback queues an event that causes the same action callback to be called again.
- This limits the number of events that can be queued during event processing using the
- Added
InputSystemUIInputModule.AssignDefaultActions
to assign default actions when creating ui module in runtime. - Added
UNITY_INCLUDE_TESTS
define constraints to our test assemblies, which is 2019.2+ equivalent to"optionalUnityReferences": ["TestAssemblies"]
.