Known Problems
Missing References or Scripts
TextMeshPro Support are Disabled After the Platform Switch
Newly Created Widgets are White
ListView Item Highlight or Selection Goes to Next Items Automatically
Standalone Input Module:
open Project Settings / Input Manager
find Horizontal and Vertical records with
Type
=Joystick Axis
(there are two of each, another one for keyboard)rename those Horizontal and Vertical records to names not used by
Standalone Input Module
Input System UI Input Module:
open Project Settings / Input System Package
add keyboard, mouse, and other required devices to the
Supported Devices
Input System Limitations
Input System is supported, but its limitations are still applied.
Limitations effects:
After enabling, the UI will not react to a pointer’s position until the position is changed.
It will affect ListView, TileView, Table and others: items under the cursor will not be properly highlighted when scrolling.
The new input system cannot yet feed text input into uGUI and TextMesh Pro input field components. This means that text input ATM is still picked up directly and internally from the Unity native runtime.
It will affect all widgets that use InputField like Autocomplete, AutoCombobox, Spinner, etc…
Dragged Objects Lagged Behind the Cursor
This happens because the cursor is rendered by the system (hardware cursor). But the game window displays frames with some lag because of enabled VSync and QualitySettings.maxQueuedFrames (frames buffer). So you see the actual cursor position and game screen that match the cursor position 1-3 frames before.
Solutions: use software cursor, it will have input lag, but there will be no difference in cursor and draggable object positions.
Add such a script at the start to change the cursor to software mode. You need a cursor image to do this, you can copy and edit “cursor_arrow_minus.png” to remove the minus sign.
using UnityEngine;
public class SoftwareCursor : MonoBehaviour
{
[SerializeField]
Texture2D cursor;
[SerializeField]
Vector2 cursorHotspot = Vector2.zero;
public void Start()
{
Cursor.SetCursor(cursor, cursorHotspot, CursorMode.ForceSoftware);
}
}
Errors After New Input System Enabled
There can be errors if Input System was enabled in Player Settings after the package was installed.
Errors will be like: Assets\New UI Widgets\Scripts\Utilities\CompatibilityInput.cs(8,20): error CS0234: The type or namespace name 'InputSystem' does not exist in the namespace 'UnityEngine' (are you missing an assembly reference?)
Solution:
Open Package Manager and install the Input System package if it is not installed (yes, Unity allows to enable Input System even if the package is not installed);
Find assembly definitions in the New UI Widgets folder (type
t:asmdef
in the project window search);Add a reference to the
Unity.InputSystem
assembly and press Apply for each UIWidgets assembly.
Warning
Do not select all UIWidgets assemblies to add a reference to all of them simultaneously because Unity will keep only the first two original references and remove all others.