Input.GetKey(KeyCode.Space)でジャンプを書いたら、押している間ずっとジャンプが連打される。直したと思ったら、今度はInput Systemパッケージを入れた途端にInput.GetKeyが例外を吐いて止まる——入力処理は「最初に書くコード」なのに、つまずきポイントが意外と多い場所です。
この記事では、Unityに古くからある標準の Input Manager(Inputクラス)を使った入力処理を教科書的に整理します。先に位置づけをはっきりさせておくと、これは 「古いプロジェクトや教材のコードを読み、動かし、いずれ移行するため」のガイド です。いま新規プロジェクトを始めるなら、入口は New Input System入門 をおすすめします。とはいえ世の中のチュートリアルや既存資産の大半は旧Inputで書かれているので、これを読めることは今も必須スキルです。
この記事でわかること
- Unityに2つある入力システムの関係と、この記事の守備範囲
GetKeyDown/GetKey/GetKeyUpの正確な使い分け(「瞬間」と「間」)- 仮想軸(Virtual Axes)がある理由と
GetAxis/GetAxisRawの違い- マウス入力の取得方法
- 新Input Systemへ移行すべき判断基準
Unityには入力システムが2つある
最初に全体像です。Unityの入力には 2つの仕組みが併存 しています。

- Input Manager(旧・標準):
Input.GetKey(...)のようにUpdate内で毎フレーム問い合わせる(ポーリング型)。追加インストール不要で、1行から書き始められる - Input System(新・パッケージ): 「ジャンプ」「移動」というア クションを定義し、イベントで受け取る。キーコンフィグや複数デバイス対応に強い(New Input System入門 参照)
この記事は前者、Input Manager の教科書です。学習コストが低く、プロトタイプや小規模ゲームでは今でも現役の選択肢です。
補足(定番のハマりポイント): Input Systemパッケージをインストールすると、切り替え確認のダイアログを経て Active Input Handling が「Input System Package (New)」になり、旧
InputクラスがInvalidOperationExceptionを投げるようになります。両方使いたい場合は「Edit > Project Settings > Player > Other Settings > Active Input Handling」を Both に変更してください。「昨日まで動いていた入力が突然例外を吐く」ようになったら、まずここを疑いましょう。
Input Managerの基本:仮想軸という考え方
Input Managerの設定は「Edit > Project Settings > Input Manager」で確認できます。ここにはHorizontal、Vertical、Jump、Fire1といった 仮想軸(Virtual Axes) が予め定義されています。
なぜキーを直接読まず、わざわざ「軸」を挟むのか。コードを特定のキーから切り離すためです。
