New Input System

New Input Systemは2020年4月に正式版になった。
今後、Unityの標準になる予定だが、現在はPackage Managerで追加インストールするパッケージとして提供されており、Unity2021も昔のInput.Manager を標準で使う。

New Input Systemのインポート

New Input Systemのパッケージをインポートすると、Input Systemを切り替える設定変更がある。

従来のInput Managerが使用できない設定になってしまうので、今までのリソースを引き継いで 作業したいときは旧UnityEngine.InputのAPIも両方使える設定に変更する。
設定は、Project SettingsのPlayer>Other Settings>Active Input Handlingで「Both」に設定する、

これで、New Input Systemと旧Input Managerの両方のAPIが使用できるようになる。

New Input Systemの使用

New Input Systemでは、入力操作をActionとして定義設定し、各機器入力をマッピングしておくことで操作する機種がが変わった時でも マッピングされているものは同じ操作入力としてプログラムが動く。
従来のInput.Managerではタッチスクリーンでの入力操作を別に書く必要があったが、それも統合できる。

キーボード・マウス入力の取得

Keyboard.current、Mouse.currentで取得できる。
New Input System用
        void Update()
        {
            // Exit Sample  
        if (Keyboard.current.escapeKey.isPressed)
            {
                Application.Quit();
				#if UNITY_EDITOR
				UnityEditor.EditorApplication.isPlaying = false; 
				#endif
            }
	}

旧 UnityEngine.InputのAPI用
        void Update()
        {
            // Exit Sample  
            if (Input.GetKey(KeyCode.Escape))
            {
                Application.Quit();
				#if UNITY_EDITOR
				UnityEditor.EditorApplication.isPlaying = false; 
				#endif
            }
	}

Actionの設定

Unity Starter Assetsの場合、PlayerオブジェクトにPlayer Inputコンポーネントが備わる。

Player Inputを新規で作るにはAdd ComponentでPlayer Inputコンポーネントを加える。

Action設定ファイルの関連付けは、アセット内の既にあるAction設定ファイルを選択するか、

Create Actions…をクリックしAction設定ファイル(".inputactions"の拡張子のファイル)を新規に作成する。

Unity Starter AssetsのPlayer Inputには、すでに作成済のAction設定ファイルが関連づけられている。
Player InputコンポーネントのActionsのところに関連付けられたファイル名をダブルクリックして開くと、Action設定画面になる。
Unity Starter Assets(TPS)のPlayer Inputの場合、
一つのAction Map "Player"が登録されている。
  • Move :プレーヤー移動
  • Look :カメラ移動
  • Jump:ジャンプ
  • Sprint:歩く→走る
  • Action Map を新規に作れば、Mapを切り替えることで、移動→対話など操作内容に応じた切り替えが可能。

    Action Map の中に、新しいActionを追加して操作を追加する。
    Listenを押して入力操作を行うと何が入力されたかがリストに出るので、そこから使いたい入力を選ぶ。
    Interactionsでボタン長押しや複数回押しなどのアクションをトリガーすることもできる。

    Actionでイベント発生

    Action Map の中に登録した”Select"アクションのイベントが起きたら、オブジェクトを回転させる処理をVisualScriptingで作る。
    Player Inputは、Playerオブジェクトのコンポーネントなので、これから回転させようとしているオブジェクトのScriptMachineでは見えない。
    使うためにはPlayerオブジェクトを探して指定をする必要がある。
    名前で検索してもよいが、シーンバリアブルにPlayerオブジェクトを変数登録しておけば、 他のオブジェクトでScriptMachineを使うときでもすぐに呼び出せる。
    PlayerオブジェクトがScriptMachine内で認識されれば、Player Inputの中に定義してある”Select"アクションが選択肢として出てくる。


    VR ESPRIT