Amazonで商品を見るセール会場へ

Unity│Input Systemの切り替え|Active Input Handlingと旧Input Managerのエラー

Unityの入力の仕組みには、古い Input Manager と、新しい Input System パッケージの2つがあります。

どちらを使うかは、Player 設定の Active Input Handling で切り替えます。

  • 場所:Edit → Project Settings → Player → Other Settings → Active Input Handling
  • 選択肢:Input Manager (Old)/Input System Package (New)/Both
  • 変えたらエディタの再起動が必要
  • 新しい方だけにしたまま Input.GetKey などを使うと InvalidOperationException が出る

この記事は、Unity公式マニュアル(Unity 6.3)と Input System パッケージの公式ドキュメント(2026年9月29日に確認)にもとづいています。

Unityのエディタでの再現は含まず、画面の名前は英語版の表記です。

目次

Active Input Handlingの3つの選択肢

選択肢働き定義される記号
Input Manager (Old)古い Input の設定を使うENABLE_LEGACY_INPUT_MANAGER
Input System Package (New)新しい Input System パッケージを使うENABLE_INPUT_SYSTEM
Both両方を使う両方
Unity公式マニュアル(Player settings)と Input System の Installation をもとに作成

Unity 6.3 のマニュアルは、Input System パッケージを新しく柔軟でサポートも手厚いもの、Input Manager を古い(legacy)ものと呼んでいます。

Android の Player 設定のページには、「Both」は Android では使えないと書かれています。

切り替える手順

  1. 「Edit」→「Project Settings」を開く
  2. 左の「Player」を選ぶ
  3. 「Other Settings」の中の「Active Input Handling」を選び直す
  4. エディタの再起動をうながされたら再起動する

公式ドキュメントは、この設定を変えたら、反映させるにはエディタの再起動が必要だとしています。

パッケージを入れたときに出る確認

Package Manager で Input System パッケージを入れると、新しい入力の仕組みを有効にするかを尋ねる画面が出ます。

「Yes」を選ぶと、新しい方が有効になり、古い方は無効になって、エディタが再起動します。

InvalidOperationExceptionが出るとき

新しい方だけを有効にしたプロジェクトで、古い書き方(UnityEngine.Input)を使うと、次のエラーが出ます。

InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.

エラー文は Unity公式の不具合報告(Issue Tracker)の題名で確かめたもので、マニュアルには載っていません。

直し方は3つあります。

直し方向いているとき
コードを Input System の書き方に直すこれからも使い続けるプロジェクト
Active Input Handling を Both にする古いアセットのコードをすぐには直せないとき(Android では使えない)
Active Input Handling を Input Manager (Old) に戻す新しい入力の仕組みを使わないとき

コードの書き換えの例

キーが押された瞬間を調べるコードは、次のように書き換えます。

// 古い書き方(Input Manager)
if (Input.GetKeyDown(KeyCode.Space)) { Jump(); }

// 新しい書き方(Input System)
using UnityEngine.InputSystem;

if (Keyboard.current != null && Keyboard.current.spaceKey.wasPressedThisFrame) { Jump(); }

キーボードがつながっていないと Keyboard.current が null になるので、先に確かめます。

両方のコードを残すとき

アセットを配るときなど、どちらの設定でも動かしたいときは、定義される記号で分けます。

#if ENABLE_INPUT_SYSTEM
    bool jump = Keyboard.current != null && Keyboard.current.spaceKey.wasPressedThisFrame;
#else
    bool jump = Input.GetKeyDown(KeyCode.Space);
#endif

新しいプロジェクトの初期状態

Unity 6.3 のマニュアルでは、新しいプロジェクトの Assets に入力アクションのアセット InputSystem_Actions が入ると書かれています。

ただし、新しいプロジェクトで Active Input Handling の初期値がどれになるかは、マニュアルでは確かめられませんでした。

自分のプロジェクトの設定は、上の手順の場所で確かめます。

Unity のバージョンを上げたあとにこのエラーが出たときは、Unityのプロジェクトのバージョンを上げる手順もあわせて見てください。

まとめ

  • 入力の仕組みは Player → Other Settings → Active Input Handling で切り替える
  • 選択肢は Old・New・Both の3つで、Both は Android では使えない
  • 変えたらエディタを再起動する
  • InvalidOperationException は、コードを直すか、設定を Both か Old にすると消える

参考:Unity「Player settings」「Input」、Input System「Installation」(2026年9月29日に確認)。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次