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