The switch-over checklist

What each item on the switch-over checklist means, why it would break with the Input System only, and how to fix it.

Documentation pages

Input Porter is coming soon to the Unity Asset Store. This guide describes the release being prepared.

With Active Input Handling set to Input System only, every remaining call to UnityEngine.Input throws an InvalidOperationException. The checklist in the last step of the migration window (Finish) finds everything that would. Each item links to its script line, scene, or prefab.

Input System only is refused while anything under Needs you remains (you can still switch anyway, after a warning). Both is always allowed: it keeps legacy input working, and there is no hurry to leave it.

Needs you

These would throw with the Input System only.

Item What to do
Calls to UnityEngine.Input remain in your code Preview and apply the rewrite. Third-party folders need ticking first
Uses of Input members LegacyInput does not provide Gyroscope, compass, location, IME composition, and pen input stay on UnityEngine.Input. Move them to the Input System’s own sensor and device APIs by hand, or keep Both
Legacy calls inside packages Update the package, or keep Both. Input Porter never edits packages
DLLs call legacy input Ask the vendor for an update, or keep Both
Legacy UI input modules in scenes and prefabs Apply the UI module swap. Your own subclasses need a hand change
Code adds a legacy UI input module at run time AddComponent<StandaloneInputModule>(), or new GameObject(..., typeof(StandaloneInputModule)). Add InputSystemUIInputModule there instead
Scenes or prefabs could not be opened to check Fix whatever stops the file opening (a missing or broken asset), then check again
The converted axis settings have not been written Preview and apply the migration, which writes them first, so the bridge knows your axes
Compile errors appear with the Input System only Code in an #if ENABLE_LEGACY_INPUT_MANAGER ... #else branch compiles for the first time after the switch. Fix the errors shown
Calls become active with the Input System only Legacy calls in branches that are compiled only without the Input Manager. Change them by hand

Worth checking

These don’t stop the switch, but look them over first.

Warnings never block the switch:

  • Reads in FixedUpdate or OnGUI arrive one frame later. They keep working; see Input read in FixedUpdate or OnGUI.
  • The converted axis settings are out of date. The Input Manager changed after they were written. Preview and apply again: the preview shows the axis settings update.
  • Legacy UI modules in package scenes and prefabs. They throw only if your game uses those scenes or prefabs.
  • Editor code adds a legacy UI module. Scene-building tools that do this make scenes that throw with the Input System only.
  • Classes derive from StandaloneInputModule. Derive them from InputSystemUIInputModule instead.
  • Rewired or InControl is installed. Check that plugin’s input source settings (see its own documentation) before choosing Input System only.

To do by hand, and exporting it

The list in the wizard’s Finish step gathers everything the migration reported but did not change, in three groups: Needs you, Worth checking, and Good to know (notices such as timing notes, folded away). It has one row per place. Click a row to open the script at that line, or to select the scene or prefab.

Export the whole list as CSV writes a file most trackers (GitHub, Jira, Linear, spreadsheets) can import; Markdown writes a checklist you can paste into an issue. Save exports outside your project’s Assets, Packages, and ProjectSettings folders.