What changes, and what does not

Every file Input Porter writes during a migration, everything it leaves alone, and why.

Documentation pages

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

Input Porter only writes what the preview showed you. Every change goes through its journal, so Undo can put it back byte for byte.

What it writes

What Where Why
Converted axis settings Assets/InputPorter/Resources/InputPorterLegacyAxes.asset Your Input Manager axes (Horizontal, Fire1, your own) as the bridge reads them, in game builds too
Input Actions asset (optional) Assets/InputPorter/InputPorterLegacyActions.inputactions The same axes as Input System actions, for moving to actions later. Written only when ticked
Scripts Each script that reads legacy input Input.GetAxis(...) becomes LegacyInput.GetAxis(...), and so on, with using StackBlender.InputPorter; added. If your project has its own class called LegacyInput, the full name is used instead
Assembly definitions Each .asmdef whose code now uses the bridge A reference to StackBlender.InputPorter is added
Scenes and prefabs Each one with its own StandaloneInputModule or TouchInputModule Replaced by InputSystemUIInputModule on the same GameObject. Repeat delay, repeat rate, and enabled carry over, and the module uses the Input System’s default UI actions
Active Input Handling Project Settings > Player Both (step 1, Prepare), then Input System only (step 5, Finish), each after a confirmed restart
The journal .input-porter-journal/ in the project folder The original bytes of every file changed, so Undo works even after you close the editor

A prefab’s module is swapped once, in that prefab, and every instance and variant follows it. Scenes and prefabs saved in binary form, or saved by an older Unity version, are opened and swapped through Unity itself. Undo still restores their exact bytes.

What it never changes

  • Packages (Packages/ and your package cache). A legacy call inside a package is listed on the checklist: update that package, or keep Active Input Handling on Both.
  • Compiled DLLs. They are scanned and listed, never edited.
  • Third-party folders (Plugins, Standard Assets, ThirdParty, and similar) unless you tick them in the preview.
  • Your own subclasses of StandaloneInputModule. They are listed; derive them from InputSystemUIInputModule by hand.
  • Code in #if branches that are off in the editor, such as #if UNITY_ANDROID. The preview shows these as notes. The checklist also compiles the project as it will build with the Input System only, and blocks the switch if a branch would break.
  • The Input Manager itself (ProjectSettings/InputManager.asset). Your axes stay where they are. If you change them later, Input Porter warns when you enter Play mode or build. Preview and apply again to bring the bridge up to date (the preview shows the axis settings update).
  • Other input plugins such as Rewired or InControl. They are named on the checklist with what to check in their own settings.

OnMouse callbacks

OnMouseDown, OnMouseEnter, and the other OnMouse* callbacks keep firing without any scene changes. From Unity 6000.6 Unity sends them itself with the Input System. On earlier Unity 6 versions the bridge sends them, in the same order legacy input did.

The bridge stays

Migrated code calls LegacyInput, which is part of Input Porter. Keep the package installed while any code uses it. To remove Input Porter, Undo the whole migration first (see Undo and recovery).