Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

Unity InputSystem 1.14にしたら動かなくなった!?InputActionが参照するアクションマップを明示的に有効しよう!

Unity 6.1.11でInput Systemパッケージを1.14に更新した所、操作が効かなくなりました。(かなりビビりました)私の環境のせいかもしれませんが、とりあえず対応策を書いておきたいと思います。

 

 Unity 6からProject-wide AssetとしてInputActionsアセットを設定し、そこから各アクションやアクションマップにスクリプト上から直接アクセス出来るようになりました。

 今回対象となるのは、このプロジェクト設定のアセットからFindActionメソッドを使ってInputActionを参照し、そこから操作を取得するという方法を採用しているケースです。つまり、

InputAction _attack;

void Start(){

    _attack = InputSystem.actions.FindAction("Attack");

}

void Update(){

    if (_attack.WasPressedThisFrame()){}

}

という風にインプットを処理する手段を取っている場合になります。

 

対応策

 タイトルの通りで、対象となるInputActionを持つアクションマップを明示的に有効にする、ということです。

デフォルトのPlayerマップを例にしますが、

Startメソッド上で

InputSystem.actions.FindActionMap("Player").Enabled();

を実行すれば、FindActionで有効にしたInputActionがきちんと効くようになるはずです。アプデでこういう明示的な処理が必要になったのでしょうか?

 

ひとまずの対策として

 今回、緊急というわけではないですが、速い方が良いと思うので簡単に書きました。自分もまだよくわかっていないですが、とりあえずはこれで動くようにはなるはずです。もし、急にキャラクターが動かなくなった!操作が効かなくなった!という人は試してみてください。ダメだったらゴメンなさい!