Unity の入力システム (Input Manager と Input System)

Unity の入力システムには、Input Manager と Input System がある。もともと Input Manager というシステムが搭載されていたが、Unity 6 から Input System が既定の入力システムになった。

比較項目Input ManagerInput System
インストール方法インストール済みPackage Manager からインストールする
ジョイスティック対応単純なものなら最初から設定されているInputAction を使えば、基本的なものは最初から設定されている
コードの簡潔さ単純なものなら簡単構成によっては複雑(仕組みの理解が必要になる)
長押し・連打判定自分で作らなければならない設定で検出できる
学習コスト低い高い
将来性deprecated標準
実行中の再割り当て自分で作らなければならない対応している
UI 操作との連携自分で作らなければならない個別に設定して切り替え可能

どちらの入力を使うかは、Project Settings の以下の場所から設定できる。両方を同時に有効にすることも可能。


サンプルのダウンロード


Input Manager

Unity プロジェクトにサンプルをダウンロード・インポートして、Assets/Input/Input Manager Sample/Input Manager Sasmple.unity シーンを開くと、Input Manager を使った入力のサンプルを実行できる。

Input Manager による入力の検出は、基本的に Update() 内で行う。Input.Get* メソッドを使って Bool 型の戻り値を取得し、入力を検出する。

ここで使っている Input.GetAxis(), Input.GetAxisRaw(), Input.GetButton(), Input.GetButtonUp(), Input.GetButtonDown() の引数として渡されている文字列は、以下のように Input Manager に設定されている。この設定は変えることもできるし、新たな Axis を追加することもできる。


Input System (1)

続いて、Assets/Input/Input System Sample 1/Input System Sample 1.unity シーンを開いて実行すると、Input System を使った入力のサンプルを実行できる。

このサンプルでは、Input Manager と同様に Update() で入力を検出している。Unity の教科書(6以降)では、このやり方を使っている。

ただし、このやり方では、Input Manager から乗り換えるメリットがあまりない。特に、ゲームパッド対応(複数の入力デバイスに対応する)場合にコーディングが大幅に増えてしまう。


Input System (2)

引き続き、Assets/Input/Input System Sample 2/Input System Sample 2.unity シーンを開いて実行すると、Input System を活用したサンプルを実行できる。

ここでは、Input System Sample 2.inputactions アセットにデバイスと操作の関連性を登録し、それを関数呼び出しに関連付けている。この関連付けをバインドという。

関連付けは System オブジェクトに追加された Player Input コンポーネントにより行われている。


やってみよう

Input System を理解するために、以下をやってみましょう。

(1) 何もない状態から Input System の設定をしてみる

Input System Sample 2 (Blank).unity シーンを開く。このシーンはまだ Input System の設定が行われていない。これを入力に応じて動かすように設定してみましょう。
以下の作業をします。

  1. System オブジェクトに Player Input コンポーネントを追加する
  2. Player Input コンポーネントの Actions プロパティにデフォルトで設定される設定をクリアする
  3. Create Actions ボタンをクリックし、デフォルトの設定のまま Actions に割り当てる
  4. Player Input コンポーネントの Behavior プロパティを Invoke Unity Events に変更する
  5. ここで本来は Events の下に、以下の画像のように Player, UI の設定が出てこなければならないが、出てこない場合がある。その場合は、いったん別のシーンを開いて戻ってくる、Actions をいったんクリアして割り当て直す、などすれば出てくる(はず)。
  6. Player の設定を展開し、各イベントに Input System Sample 2 コンポーネントのメソッドを割り当てる

(2) ボタンの長押しを検出してみる

サンプルでは、Fire ボタンの長押し (Hold) を検出できます。以下のように設定して、長押しを検出してみましょう。


参考資料

  • Input System マニュアル(最新)
    ページの言語は右上の Language オプションで切り替えられる。ただし、最新バージョンでは日本語版がない場合もあることに注意すること。

コメントする

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。