1. はじめに|新Input Systemとは?
こんにちは!今回は「Unityの新Input Systemってなに?」というテーマで、初心者の方にもわかりやすく解説していきます!
Unityでは昔から「Input.GetKey()」などの命令を使って、キーボードやゲームパッドの入力を処理していましたよね。これを「旧Inputシステム」と呼びます。でも実は最近、「もっと使いやすくてパワフルな方法」として【新Input System】が登場しているんです。
新Input Systemのポイントはこれ!
- 🔄 複数の入力デバイス(キーボード、ゲームパッド、スマホタッチ)に対応しやすい
- 🎮 ゲームパッドのボタンや軸を「名前」で管理できる
- 🔧 入力設定をエディタで見ながら作れるから、コードがスッキリ
- 👥 プレイヤーが2人以上いるゲームでも、操作を分けやすい
「InputAction」という設定ファイルを使って、「ジャンプ」「移動」「攻撃」といった“動きの名前”に対して、どのキーやボタンを使うかを自由に決められるのが特徴です。
たとえば、Aボタンでジャンプ、↑キーでもジャンプ、スマホなら画面タップでジャンプ……という風に、一つのアクションに複数の操作方法を登録できちゃうんですよ!
2. 新Input Systemの導入方法
それでは、実際にUnityで「新Input System」を使えるようにしてみましょう!
ここでは導入のステップをひとつずつ解説しますね。
🔧 Step1:パッケージマネージャーからインストールしよう
まずはUnityのメニューから「Window」→「Package Manager(パッケージマネージャー)」を開いてください。
- 左上の項目から「Unity Registry」を選びます
- 「Input System」と検索して出てくるパッケージを選択
- 「Install」をクリック!

これで新Input Systemが使えるようになります🎉
⚙ Step2:Project SettingsでInput Systemに切り替える
次に、旧Inputシステムから「新Input System」へ切り替える設定をします。
- メニューから「Edit」→「Project Settings」を開く
- 「Player」→「Other Settings」タブを選択
- 「Active Input Handling」の項目を「Input System Package(New)」に変更します

✅補足:
「Both」にすると旧Inputも新Inputも同時に使えるので、移行中の人におすすめ!
設定を変更すると「Unityを再起動してください」と表示されるので、いったん再起動しましょう。
🎮 Step3:PlayerInputコンポーネントを使ってみよう
再起動したら、いよいよシーンに「PlayerInput」を使ってみましょう。
- ヒエラルキー(Hierarchy)ウィンドウで「右クリック」→「3D Object」→「Cube」などでプレイヤーオブジェクトを作成
- 作ったCubeに「PlayerInput」コンポーネントを追加します
➡︎ Inspectorで「Add Component」→「PlayerInput」と入力

このPlayerInputが、新Input Systemの中心的なコンポーネントです!
3. キーボード&ゲームパッド対応の実装方法
Unityの新Input Systemでは、「InputAction」という仕組みを使って、キーボードやゲームパッドの操作を簡単に設定できます。
今回は、よく使う「移動」と「ジャンプ」の操作を例に、設定からスクリプトまでやさしく紹介します!
🎮 Step1:Input Actions アセットを作ろう
まずは、操作の設定ファイルを作成します。
- プロジェクトウィンドウを右クリック「Create」→「Input Actions」を選びます
- 名前を「PlayerControls」とつけましょう
作ったアセットをダブルクリックすると、Input Actionsの設定画面が開きます。

📝 Step2:アクションを設定しよう
設定画面で、以下のように操作を追加していきます。
✅ 「Action Map」を作成(=操作カテゴリ)
- 名前は「Gameplay」とします
✅ 「Move」アクションの設定
- 「Gameplay」内で「+」をクリックして「Move」というアクションを追加
- 「Action Type」は「Value」→「Vector2」を選ぶ(方向入力用)
- 「Binding」で「2D Vector」を追加して、各方向キーやゲームパッドのスティックを割り当てます
➡︎ 上:W / ゲームパッドの上
➡︎ 下:S / ゲームパッドの下
➡︎ 左:A / ゲームパッドの左
➡︎ 右:D / ゲームパッドの右
✅ 「Jump」アクションの設定
- 「+」で「Jump」アクションを追加
- 「Action Type」は「Button」
- Bindingは「Spaceキー」や「ゲームパッドのAボタン」などを割り当てましょう
終わったら「Save Asset」ボタンをクリック!
🧩 Step3:PlayerInputと連携しよう
次に、ヒエラルキーにあるプレイヤー(例:Cube)にInputをつなぎます。
- Cubeを選択し、Inspectorで「PlayerInput」コンポーネントを開きます
- 「Actions」に、さっき作った「PlayerControls」をドラッグ&ドロップ
- 「Behavior」は「Invoke Unity Events」を選びましょう
すると、自動的に「OnMove」や「OnJump」などのイベントがInspectorに出てきます!
💻 Step4:スクリプトで動きを制御しよう
プロジェクトウィンドウを右クリック「Create」→「C# Script」を選んで、新しいスクリプトを作成し、「PlayerMovement」と名前を付けます。
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
private Vector2 moveInput;
public float speed = 5f;
private Rigidbody rb;
private void Awake()
{
rb = GetComponent<Rigidbody>();
}
public void OnMove(InputAction.CallbackContext context)
{
moveInput = context.ReadValue<Vector2>();
}
public void OnJump(InputAction.CallbackContext context)
{
if (context.performed)
{
rb.AddForce(Vector3.up * 5f, ForceMode.Impulse);
}
}
private void FixedUpdate()
{
Vector3 move = new Vector3(moveInput.x, 0, moveInput.y);
rb.MovePosition(rb.position + move * speed * Time.fixedDeltaTime);
}
}
そして、作った PlayerMovement
スクリプトをCubeにドラッグ&ドロップしてアタッチしてください。
最後に、PlayerInputの「OnMove」と「OnJump」欄に、Cubeオブジェクトと対応する関数(OnMove、OnJump)を紐づければ完了です!

これで、キーボードでもゲームパッドでも同じ操作ができるようになりました!🎮✨
4. タッチ操作(スマホ)への対応方法
Unityの新Input Systemを使えば、スマホのタッチ操作もばっちり対応できます!
ここでは「仮想パッド(バーチャルスティック)」や「タッチボタン」で操作する方法を、初心者向けにやさしく解説します。
📱Step1:UI Toolkitではなく「On-Screen Controls」を使おう
新Input Systemには「On-Screen Controls(オンスクリーンコントロール)」という便利な仕組みがあります。これを使えば、スマホ上にスティックやボタンを簡単に表示できます!
✅ まずは準備
- メニューから「GameObject」→「UI」→「Canvas」でUIを作成
- そのCanvasの上に、右クリック →「UI」→「Panel」で背景を作ってもOK!
🕹️Step2:On-Screen Stick(仮想スティック)を設置しよう
- メニューから「GameObject」→「UI」→「On-Screen Stick」を選択
- ヒエラルキーに表示された「On-Screen Stick」を選択し、右下などに配置
- 「Control Path」に
*/<Gamepad>/leftStick
や*/<Touchscreen>/primaryTouch
を設定
➡︎ 基本的にはGamepad
を想定しておけばOKです!
🔘Step3:On-Screen Button(タッチボタン)も追加しよう
- 同様に、「UI」→「On-Screen Button」をCanvasの中に追加
- 「Control Path」に
*/<Keyboard>/space
や*/<Gamepad>/buttonSouth
を設定
➡︎ これは「Jump」アクションなどに使えます!
ボタンの見た目は Image
コンポーネントでカスタマイズできるので、好きな画像を使ってもOKです。
👣Step4:Input Actionと連携する
さきほど作った Input Actions
アセット(例:PlayerControls)では、
「Move」「Jump」などの操作に複数のBindingを追加できます。
たとえば…
- Move:キーボードのWASD、ゲームパッドのスティック、仮想スティック(On-Screen Stick)
- Jump:スペースキー、Aボタン、仮想ボタン(On-Screen Button)
といった感じで、全部の操作を一つのアクションにまとめて管理できます✨
🛠Step5:Input Debuggerで確認してみよう
動作確認には「Input Debugger」がおすすめ!
- メニューから「Window」→「Analysis」→「Input Debugger」
- 実機またはUnity Remoteなどで動かすと、どのデバイスが反応しているか確認できます

これで、スマホでもキーボードでもゲームパッドでも、1つのスクリプトで全部の入力に対応できるようになります🎉
5. よくあるトラブルと解決方法
新Input Systemはとても便利ですが、最初は「なんで動かないの!?」とつまずくこともあります。ここでは、よくあるトラブルとその解決法をまとめて紹介します!
❓ケース①:キーやボタンを押しても反応しない!
✅チェックポイント
- 「PlayerInput」にInput Actionsアセットがちゃんと設定されているか?
- 「Behavior」が「Invoke Unity Events」になっているか?
- イベント欄(OnMoveやOnJump)にスクリプトの関数が割り当てられているか?
💡解決法
スクリプトの関数(例:OnJump()
)をイベントに割り当てるのを忘れていると、動きません!
InspectorでCubeなどのオブジェクトをドラッグして、関数をきちんとセットしましょう。
❓ケース②:スクリプトで値が取れない・Nullになる!
✅チェックポイント
- スクリプト内で
InputAction
を自分で書いているなら、.Enable()
を呼んでますか? Awake()
やStart()
でPlayerInput
が初期化されているか確認!
💡解決法
InputActionをコードで使う場合、有効化(Enable)しないと動きません。
例:
moveAction = playerInput.actions["Move"];
moveAction.Enable();
❓ケース③:Unity 2023でInput Systemが効かない!
✅チェックポイント
- Project Settingsの「Active Input Handling」が「Input System Package(New)」になってる?
- 新Input Systemのバージョンが古くない?(→パッケージマネージャーでアップデート可能)
💡解決法
Unity 2023では、特に「Project Settings」が旧Inputのままだと動きません。
以下の記事でも詳しく解説しています👇
🔗 Unity 2023でInput Systemが動かない時の対処法
❓ケース④:スマホでタッチが反応しない!
✅チェックポイント
- On-Screen ButtonやStickがCanvasの中に入っているか?
- 「Control Path」の設定ミスがないか?
💡解決法
ボタンやスティックの Control Path
が間違っていると、全く反応しません!
迷ったら */<Touchscreen>/press
や */<Gamepad>/buttonSouth
を試してみましょう。

これで多くの「動かない!」トラブルはスッキリ解決できるはずです😊
6. まとめ|Input Systemでできること・おすすめ活用法
今回はUnityの新しいInput Systemについて、導入方法から操作設定、トラブル解決まで一通りご紹介しました。
最後にもう一度、新Input Systemでできることと、今後のおすすめ活用法をまとめておきますね!
✅ 新Input Systemのここがすごい!
- 🎮 キーボード、ゲームパッド、スマホタッチなど複数の入力デバイスに対応
- 🔄 アクションに対して複数の操作方法を設定可能
- 👥 複数プレイヤーに対応した設計がしやすい(マルチプレイ対応にも◎)
- 🧼 コードと入力設定を分離できるから、スクリプトがスッキリ
- 🔍 Input Debuggerでデバイスの動きをリアルタイム確認!
💡 おすすめ活用シーン
- 2人プレイ対応ゲーム:PlayerInputの「Join Behavior」を使えば、コントローラーを繋ぐだけでプレイヤーが追加可能!
- スマホ&PC対応ゲーム:1つのInput Actions設定で、スマホでもPCでも同じ動作ができる!
- UI操作との連携:ボタン・スライダー・タッチ操作などもInput Systemと連携可能。ゲームとUIを一体化した操作が作れる!
👣次にやってみよう!
- プレイヤーごとに異なるInput Actionsを使ってマルチプレイヤーゲームを作る
- Input Systemでメニュー画面の操作も統一して扱う
- スクリプトだけでなく「ScriptableObject」と組み合わせて再利用性の高い入力設計を目指す

Input Systemを使いこなせれば、Unityでのゲーム開発がグッとレベルアップします!
最初はとっつきにくいかもしれませんが、慣れるともう旧Inputには戻れないくらい便利です😊
あわせて読みたい
🎮 Unity 2023でInput Systemが動かない時の対処法
→ 新Input Systemが動かない時のチェックポイントと設定方法をまとめた記事。バージョンアップ後に動かない人におすすめ!
🕹️ キー入力でカメラのアングルを切り替える方法
→ Input Systemでも応用できる、キー操作によるカメラ制御の基本テクニック!
📱 Unityでスマホゲームを作る方法|ゼロから学ぶ入門ガイド
→ タッチ操作との組み合わせにも最適!スマホ対応の基本をまとめたガイド。
🧠 Unity初心者必見!キー長押しでスクリプトを制御する方法
→ Input Systemでも「長押し」を使いたいときに参考になる基本スクリプト。
🧩 Unity初心者必見!他のスクリプトから関数を呼び出す方法
→ PlayerInputなどから外部スクリプトを呼びたいときに役立つ内容!
よくある質問(FAQ)
- Q新Input Systemと旧Input Systemはどっちを使えばいいの?
- A
これから始めるなら「新Input System」一択です!
複数デバイス対応や柔軟な設定ができるため、将来的にもこちらが主流になります。
ただし、旧Inputのシンプルさが欲しい場合は「Both」に設定して併用も可能です。
- QInput Systemが動かないときはどうしたらいい?
- A
以下の3つをチェックしてください:
- Project Settingsで「Active Input Handling」が「Input System」になっているか?
- PlayerInputコンポーネントにInputActionsアセットが設定されているか?
- スクリプトのイベント(OnMoveやOnJump)が正しく紐づいているか?
詳しくはこちらの記事も参考にどうぞ!
- QInput Systemはスマホでも使えますか?
- A
はい、On-Screen StickやOn-Screen Buttonを使えばOKです。
タッチ操作も他のデバイスと同じ「Input Actions」で一元管理できるので便利ですよ。