Known Problems

Missing References or Scripts

Sometimes newly created widgets have missing references, or scripts are missing after the update.
Please try to import package again.

TextMeshPro Support are Disabled After the Platform Switch

In some cases TextMeshPro support can be disabled after the platform switch because of the missing directive in Scripting Define Symbols for the current platform.
Like an upgrade to the new Unity version with the newly added platform and then switch to it.
You need to enable TextMeshPro Support again without saving the scene to avoid references lost.

Newly Created Widgets are White

It happens because of the empty style used as default and it automatically applied to newly created widgets.
Please open New UI Widgets/Styles/UIWidgets Style Default and check it settings (it should not be all white color or null), and set it as default.
If UIWidgets Style Default values are all white color or null, then try to import package again, sometimes import works incorrectly.
You can use “t:UIWidgets.Styles.Style” to find all styles and check which one is used by default.
_images/styles-search.png

ListView Item Highlight or Selection Goes to Next Items Automatically

Reason are navigation events raised by a gamepad or joystick, sometimes unintentionally because of sticks drift.
Solutions for the different input modules:
  • 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:

  1. 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);

  2. Find assembly definitions in the New UI Widgets folder (type t:asmdef in the project window search);

  3. 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.