入力システムパッケージ (Input System Package) を導入する
検証環境
- Windows
-
- Windows 11
- Unity エディター
-
- 2020.3.25f1
入力システムパッケージ (Input System Package) について
Unity の初期のころはユーザーからの入力を受ける仕組みとして「入力マネージャー (Input Manager)」を使用していました。 しかし多様化するゲームプラットフォームの環境において入力マネージャーは古くなってしまったため、 新しくユーザー入力を管理する仕組みとして「入力システムパッケージ (Input Systemu Manager)」が追加されました。
2022年時点では新しい「入力システムパッケージ」と互換性のための「入力マネージャー」両方が使えるようになっています。 古いプロジェクトがある場合は「入力マネージャー」をそのまま使ってもよいですが、 今後は新しい「入力システムパッケージ」に推移すると思いますので新しく作るプロジェクトにおいては 「入力システムパッケージ」を使うようにします。
ここではその設定方法について説明します。
入力システムパッケージのインストール
Unity エディター 2020.3.25f1 時点では入力システムパッケージ (Input System) は初期インストールされていないパッケージとして管理されています。 パッケージをインストールするには以下の手順を行います。
プロジェクトを作成し Unity エディターを起動したらメニューから「ウィンドウ > パッケージマネージャー」を選択します。
パッケージマネージャーの画面が表示されたらパッケージから「Unity レジストリ」を選択します。
左の一覧を下にスクロールすると「Input System」があるので選択して右下の「インストール」ボタンをクリックします。
インストールするとインストール済みとして表示されるのでダイアログを閉じます。
もしパッケージインストール後に以下のようなダイアログが表示された場合は「Yes」ボタンをクリックすることによって次の「入力システムパッケージをアクティブにする」の設定が自動で行われるようになります。 その場合 Unity エディターは再起動します。
This project is using the new input system package but the native platform backends for the new input system are not enabled in the player settngs. This means that no input from native devices will come through.
Do you want to enable the backends? Doing so *RESTART* the editor and will *DISABLE* the old UnityEngine.Input APIs.
入力システムパッケージをアクティブにする
パッケージをインストールしただけなので現時点では旧式の入力マネージャーがアクティブになっています。 これを入力システムパッケージに切り替えます。
メニューから「編集 > プロジェクト設定」を選択します。
Project Settings ダイアログが開いたら左のメニューから「Player」を選択します。
下にあるタブで「PC, Mac....の設定」のタブを選択し、一番下にあるグループの「その他の設定」を展開します。
ある程度下にスクロールすると「設定」カテゴリの中に「使用中の入力処理」という項目があり、ここで「入力システムパッケージ (新)」を選択することができます。 一応両方アクティブにすることもできますが紛らわしいので新規プロジェクトの場合は入力システムパッケージのみにしたほうが良いでしょう。
変更すると以下のダイアログが表示されるので「Apply」をクリックして Unity エディターを再起動します。
これで完了です。
コード入力で「UnityEngine.InputSystem」名前空間を使用するとエラーになる問題について
現時点ではコードを入力していないのでエラーにはなりませんが、
コード入力時に UnityEngine.InputSystem
名前空間を使用しようとすると存在しないというエラーが表示される場合があります (例:Visual Studio)。
例えば「入力システムパッケージ」をインストールする前にスクリプトを作成した場合などに発生します。
これはプロジェクトに UnityEngine.InputSystem
の参照がないために起こる現象です。
これを解決するには以下の操作を行います。
メニューから「編集 > 環境設定」を選択します。
左のメニューから「外部ツール」を選択し、「Regenerate project files」ボタンをクリックします。
これを実行することにより Visual Studio では UnityEngine.InputSystem
が参照に追加されます。
また、コードの方もエラーがなくなります。
UI のユーザー入力の受け付けを入力システムパッケージに変更する
この項目については入力フィールドやドロップダウンなどの Unity UI を使用しない場合は関係ありませんので無視してください。
ビューに入力フィールドやドロップダウンなどを配置すると自動的に Canvas が作成され、そこに UI オブジェクトは配置されます。 それと同時に「EventSystem」というオブジェクトも作成されます。これは UI で何らかの入力操作が行われたときの処理を管理するオブジェクトです。
この EventSystem は初期状態では旧式の入力マネージャーによって動作しています。 入力システムパッケージのみを有効にしている場合、このままでは UI は動作しないので入力システムパッケージに変更する必要があります。
変更するにはまず EventSystem を選択します。
するとインスペクターにある「Standalone Input Module」に警告が表示されています。
ここで「Replace with InputSystemUIInputModule」ボタンをクリックすると「Standalone Input Module」が「Input System UI Input Module」に置き換わります。
これでゲーム上の UI が正常に入力を受け付けられるようになります。