現場レベルのゲーム制作が、すべてここで学べます。
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オブジェクトにアタッチして前後左右に移動させるスクリプトを書いたとしましょう。
|
1 2 3 4 5 6 7 8 9 10 11 |
using UnityEngine; public class PlayerMove : MonoBehaviour { public float speed = 5f; void Update() { float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); transform.Translate(new Vector3(x, 0, z) * speed * Time.deltaTime); } } |
Unity6以前ではこんなコードで動かしていました。
新Input Systemの書き方(Unity 6以降)
Unity6以降からは以下のようなInput Systemを使った書き方が可能になりました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using UnityEngine; using UnityEngine.InputSystem; // 追加 public class PlayerMove : MonoBehaviour { public float speed = 5f; void Update() { // Keyboard.current で直接キー入力を取得 Vector2 input = Vector2.zero; if (Keyboard.current != null) { input.x = (Keyboard.current.dKey.isPressed ? 1f : 0f) - (Keyboard.current.aKey.isPressed ? 1f : 0f); input.y = (Keyboard.current.wKey.isPressed ? 1f : 0f) - (Keyboard.current.sKey.isPressed ? 1f : 0f); } transform.Translate(new Vector3(input.x, 0, input.y) * speed * Time.deltaTime); } } |
↑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でも大丈夫です。
現場レベルのゲーム制作が、すべてここで学べます。





コメント