i-school - 3Dグラフィック 2D横スクロールアクション 手順13
 新しいキー入力の機能である InputSystem を利用した制御を行います。


 以下の内容で実装を進めていきます。

手順13 ーInputSystem の実装ー




 新しい学習内容は、以下の通りです。

 ・InputSystem



1.設計


 InputSystem は複雑な内容になっていますので、まずは詳細を学習する前に、
どのような順番で設定を行っていくのか、どのいった機能になっているのかを実際に触りながら実践してから詳細に移ります。


参考サイト
Unity 公式マニュアル
InputSystem
https://docs.unity3d.com/Packages/com.unity.inputs...
Unity 公式サイト Unity For Pro
Unityの新入力システム・Input Systemを使おう
https://forpro.unity3d.jp/unity_pro_tips/2021/05/2...
ねこじゃらシティ 様
【Unity】Input Systemの使い方入門
https://nekojara.city/unity-input-system-intro
ゆきやまん工房 様
【Unity】よく分からないけどInputSystemを最低限使ってみる
https://yukiyaman-workshop.hatenablog.jp/entry/202...


2.InputSystem をインストールする


 Unityメニューの Window => PackageManaer を選択し、PackageManaer 内の Packages より UnityRegistry を選択します。

 左側にある項目より InputSystem を選択してインストールします。バージョンは最新のもので問題ありません。
そのため、下記の画像とはバージョンが異なる可能性があります。


PackageManaer 画像




 インストールが完了すると、Warning のウインドウが表示されます。


Warning ウインドウ



 これは、入力方式を従来の InputManager による入力から新しくインストールした InputSystem に切り替えるかどうかを確認するものです。

 なお、入力方式の設定としては3種類あります。

 1.InputSystem のみを利用する
 2.InputManager のみを利用する
 3.従来の InputManager による機能と InputSystem による機能の両方を利用する
 
 Yes を選択すると、【1.InputSystem のみを利用】できるようになります。その後、自動的に Untiy を再起動します。

 No を選択すると、ウインドウを閉じます。その場合、【2.InputManager のみを利用する】ことになり、InputSystem は利用できない状態になります。

 今回は No を選択して Warning ウインドウを閉じてください。
その後、Unity メニューの Edit => PlayerSettings を選択して PlayerSettings ウインドウを開きます。
ウインドウ内の左側の項目より Player を選択してください。Player の設定内の Configuration の項目内 Active Input Handling で
現在の入力方式の InputSystem を選択することが出来るようになっています。

 今回はこの設定を Both にしておくことで、【3.従来の InputManager による機能と InputSystem による機能の両方が利用できる】ようにします。

 
PlayerSettings 内 Player 画像


 
 この項目を変更すると確認メッセージのウインドウが開きますので、Apply を選択して設定を反映します。
自動的に Unity が再起動し、設定が反映された状態で起動します。


 以上で InputSystem の導入は完了です。


3.PlayerController スクリプトを InputSystem 用に修正する


 移動の処理については、キー入力の方式を InputManager から InputSystem に変更します。
異なる機能ではありますが、これはあくまでも内部的な処理の修正になるため、ゲームの見た目は何も変わりません。

 なお、どちらのキー入力にも対応できるように bool 型の変数を用意して切り替えることができるようにしておきます。

 このように、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することをリファクタリングといいます。


PlayerController.cs

 <= クリックすると開きます


 スクリプトを修正したらセーブを行います。


4.プレイヤー用のキャラに InputSystem の設定を行う

 InputSystem を利用するためのコンポーネントが用意されていますので、そちらを追加して設定を行います。

 プレイヤー用のゲームオブジェクトを選択し、インスペクターの一番下にある Add Component ボタンより PlayerInput コンポーネントをアタッチします。


インスペクター画像




 次に PlayerInput コンポーネント内にある Create Action ボタンを押し、新しい Action アセットを作成します。
保存先、名前は任意のもので問題ありません。ここでは Player という名称にしています。

 Action アセットには、各キーの情報を登録しておく機能があります。


インスペクター画像




 Action アセットを作成すると、PlayerInput コンポーネント内の Actions の項目に自動的に登録されて利用できる状態になります。


インスペクター画像





 続いて、同じく PlayerInput コンポーネント内にある Behavior の項目を選択し、Send Messages から Invoke Unity Events に変更します。
こちらを変更すると、その下にある項目も自動的に変更されて Events として新しい情報が表示されます。


インスペクター画像




 最後に PlayerController スクリプト内に追加した OnMove メソッドと InputSystem の Move の Event を紐付けします。
これは、Button にメソッドを登録する場合と同じように、Move に登録したいメソッドのあるスクリプトがアタッチされているゲームオブジェクトをドラッグアンドドロップして登録して
その後、呼び出したいメソッドを選択します。


メソッド選択時 インスペクター画像



メソッド登録後 インスペクター画像



 以上で設定は完了です。


5.ゲームを実行して動作を確認する


 いままでと同じようにプレイヤー用のゲームオブジェクトの移動が行えるかを確認します。

 問題なく動作している場合には、PlayerController スクリプトの設定を変更して
従来の InputManager による移動も行えるかを確認しておきます。



6.InputSystem








 以上でこの手順は終了です。

 次は 手順14 ー−? です。