02 — Install and Project Settings
Step 1 — Check whether you already have it
New Unity 6 template projects ship with the Input System installed and active. Check: Window → Package Manager → In Project — look for Input System. If it's there, skip to the settings check below.
Step 2 — Install (older or stripped-down projects)
- Window → Package Manager
- Packages dropdown → Unity Registry
- Find Input System → Install
- Unity asks to enable the new input backends and restart the editor — click Yes. This restart is required; the input backends only switch at startup.
Step 3 — The setting that causes 90% of forum threads
Edit → Project Settings → Player → Other Settings → Active Input Handling:
- Input System Package (New) — only the new system works.
Input.GetKeynow throws exceptions. - Both — old and new APIs work side by side. Recommended for class projects: imported assets and older tutorials that use
Input.Getaxiskeep working while you learn the new system. - Input Manager (Old) — the new system is off; this kit's scripts compile out (see below).
- "InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling..." → you're on New but some script uses old
Input.calls. Set Both or port the script. - Buttons/UI don't respond after switching → scene has an old
StandaloneInputModuleon the EventSystem; Unity offers a one-click Replace with InputSystemUIInputModule on the component. - Kit's Tools menu shows "Setup Help (Input System not active)" → the package isn't installed/active. Follow steps above.
Step 4 — Project-wide settings (worth showing students)
Edit → Project Settings → Input System Package: default deadzones, tap time, etc. The defaults are fine for this course — just know where it lives. Unity 6 also has Project-wide Actions here (a global default actions asset); this kit deliberately uses its own asset file instead so everything is explicit and portable.
How this kit protects itself
Every runtime script in the kit is wrapped in:
#if ENABLE_INPUT_SYSTEM
... the whole script ...
#endif
ENABLE_INPUT_SYSTEM is defined by Unity only when the package is active. So importing this kit into a project without the Input System doesn't spray compile errors — the scripts simply sleep, and the Tools menu shows a help item telling you what to install. Steal this trick for any asset you distribute.