【Unity6対応】Input.GetAxisでエラーが出る原因と解決法|Input ManagerとInput Systemの違いを初心者向けに解説 | Unity入門の森 ゲームの作り方

【Unity6対応】Input.GetAxisでエラーが出る原因と解決法|Input ManagerとInput Systemの違いを初心者向けに解説

Unity技術ブログ・開発テクニック

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

Unity6以降とそれ以前のUnityエディタで最も変わったのはやはり入力システム「Input System」と「Input Manager」の変化と言えるでしょう。

Unity入門したばかりの初心者さんだと以前の入出力処理のスクリプトを書いても

InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. UnityEngine.Internal.InputUnsafeUtility.GetAxis~~

などとわけのわからないエラーが出て動かなくなって困ってしまうかもしれません。

そんなときの対処法をお伝えします。

【ゲームの作り方講座プレゼント中!】

【Player Settingsで旧Input Managerと新Input System両方を使えるようにする】

やり方は簡単です。Unityのメニュー画面から

Edit → Project Settings → Player → Other Settings “Active Input Handling” を “Both” に変更。

そしてUnityを再起動。

↑こんな形でSettingを変更すればOKです。

では、そもそもこのInput ManagerとInput Systemでのスクリプトの書き方の違いって何なのでしょうか?

旧Input Managerの書き方(Unity 6以前)

例えばある3Dオブジェクトにアタッチして前後左右に移動させるスクリプトを書いたとしましょう。

Unity6以前ではこんなコードで動かしていました。

新Input Systemの書き方(Unity 6以降)

Unity6以降からは以下のようなInput Systemを使った書き方が可能になりました。

↑using UnityEngine.InputSystem; を追加してコードを記述していきます。

このように結構見た目が違ってきちゃってますね💦

新Input Systemと旧Input Managerどっちを使えばいいの?

結論から言うと、今はどっちを使ってもOKです。

強いて言えば様々なデバイスでゲームパッド対応などを行いたい方は新Input System、手軽にまずは実装したい方は旧Input Managerでいいでしょう。

過去の書き方は今も先ほどの設定を行えば使えるので今のところ大きな問題はないです。

いつか新しい書き方にしてねーという変化があるかもしれませんが、Input Managerを完全に使えなくすると困る開発者や動かなくなるアプリが増えるのでどっちも残していくのかなと思ってはいます。

どちらを選ぶべき?

  方法1(旧Input Manager) 方法2(新 Input System)
手軽さ
将来性 △(やや非推奨方向)
ゲームパッド対応

小さなプロジェクトや学習目的なら方法1で十分、長期運用・多くのゲームコントローラーに対応したいなら方法2を使えるようになるのがおすすめです。

ただし、少々難易度が高いのでUnity入門者や初心者さんはまずは旧Input Managerでも大丈夫です。

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

タイトルとURLをコピーしました