はじめに
Unityで新Input Systemを触り始めた時、
- 「Input Actionsって何…?」
- 「PlayerInputを付けたのに動かない…」
- 「動画ごとに設定方法が違って混乱する…」
こんな状態になったこと、ありませんか?🙂
私も最初はかなり混乱しました。
特に旧Input Managerに慣れていると、「なぜこんなに設定が増えたの?」と感じやすいんですよね。
しかもInput Systemは、
- Input Actions
- Action Map
- PlayerInput
- Enable()
- UI Input Module
…と、新しい単語が一気に増えるので、「何が必須で、何が応用なのか」が見えにくくなりがちです。
ただ、構造さえ理解できると、Input Systemはかなり強力です。
キーボードだけでなく、
- ゲームパッド
- UI操作
- スマホのタッチ入力
- キーコンフィグ
まで同じ仕組みで管理できるので、後から機能追加しやすくなります。
逆に言うと、「とりあえず動いたからOK」で進めると、後半で入力周りが複雑化して崩れやすいんです。
この記事では、
- 新Input Systemの基本構造
- 実際に動く導入手順
- PlayerInputの使い方
- コード制御との違い
- UI・ゲームパッド対応
- 動かない時の原因切り分け
まで、順番に整理していきます。
「なんとなく設定していた状態」から卒業して、
「なぜ動くのか」「なぜ動かないのか」を自分で判断できる状態を目指していきましょう✨
Unity Input Systemは「Action中心」で理解すると迷わない
Unityの新Input Systemは、最初に「入力キー」ではなく「Action(行動)」を中心に考えると、一気に理解しやすくなります。
ここを理解できると、
- なぜInput Actionsを作るのか
- なぜPlayerInputが必要なのか
- なぜゲームパッド対応が楽なのか
が全部つながって見えてきます。
新Input Systemは「キー」ではなく「行動」を管理する
旧Input Managerでは、
Input.GetKey(KeyCode.Space)
のように、「どのキーが押されたか」を直接監視する形が基本でした。
一方、新Input Systemでは、
- Jump(ジャンプ)
- Move(移動)
- Attack(攻撃)
のような“行動”を先に作ります。
その後で、
- Spaceキー
- XboxのAボタン
- スマホUIボタン
などを、同じActionへ割り当てるイメージです。
つまり、
「どのボタンを押したか」ではなく、「プレイヤーが何をしたか」を管理する仕組み
なんですね。
この考え方に変わるだけで、後からゲームパッド対応を追加しても、コードを書き換える量がかなり減ります。
最初はPlayerInputを使うのが一番ラク
Input Systemにはいくつか実装方法がありますが、最初は PlayerInput を使う構成がおすすめです。
理由はシンプルで、
- Inspector中心で設定できる
- 入力イベントが見える
- 「何が動いていないのか」を把握しやすい
からです。
逆に最初からコードだけで管理すると、
- Enable忘れ
- Action名ミス
- イベント未登録
などでハマりやすくなります。
特に初心者のうちは、「Input System自体の理解」と「C#実装」が同時進行になるので、脳みそが軽くパンクします…😂
まずは、
- Move
- Jump
だけを動かす最小構成で慣れるのが近道です。
Input Systemが動かない原因はほぼ決まっている
Input Systemで「入力が反応しない」時、実は原因の多くは似ています。
| よくある原因 | 内容 |
|---|---|
| Active Input Handling未設定 | 新Input System自体が有効化されていない |
| Save Asset忘れ | Input Actions設定が保存されていない |
| Enable忘れ | Action Mapが無効状態 |
| UI Module未変更 | UIだけ旧Input設定のまま |
特に Save Asset忘れ はかなり多いです。
「昨日動いてたのに今日動かない…」という時、実は保存されていなかっただけ、というケースも珍しくありません。
Input Systemは便利な反面、“設定アセットを管理する感覚”が必要になります。

ここを理解すると、Input Systemが急に整理されて見えてきますよ✨
Unity新Input Systemとは?旧Inputとの違いを解説
Unityにはもともと「Input Manager」という入力システムがありました。
たとえば、
Input.GetKey(KeyCode.W)
のように書いて、キーボード入力を毎フレーム監視する方法ですね。
この仕組みはシンプルで扱いやすい反面、ゲームが大きくなるほど管理が大変になりやすい特徴があります。
特に、
- ゲームパッド対応
- キーコンフィグ
- UI入力
- 複数デバイス対応
を後から追加しようとすると、コードがかなり複雑になりがちです。
新Input Systemは「複数デバイス前提」で作られている
新Input Systemは、最初から
- キーボード
- マウス
- Xboxコントローラー
- PlayStationコントローラー
- スマホタッチ操作
などをまとめて扱う前提で設計されています。
そのため、
Jump
という1つのActionに対して、
- Spaceキー
- XboxのAボタン
- 画面上のUIボタン
を同時に割り当てることができます。
ここが旧Inputとの大きな違いです。
以前のInput Managerでは、「どのキーが押されたか」を直接コードに書くことが多かったので、デバイス追加時にコード修正が増えやすかったんですね。
旧Input Managerとの違い
| 比較項目 | 旧Input Manager | 新Input System |
|---|---|---|
| 入力取得 | Input.GetKey中心 | Actionイベント中心 |
| ゲームパッド対応 | やや面倒 | 標準対応 |
| キー変更 | 実装が必要 | 比較的やりやすい |
| UI連携 | 旧UI前提 | 新UI対応 |
| 入力設定 | Project Settings固定 | アセット管理 |
特に大きいのは、「入力設定をアセット化できる」点です。
Input Actionsとして保存できるので、
- 操作設定を整理しやすい
- 複数キャラクター管理しやすい
- UI用入力を分離しやすい
など、後から拡張しやすくなります。
初心者は旧Inputとどちらを使うべき?
結論から言うと、
これから新しく作るなら、新Input Systemを使う方がおすすめです。
理由は、Unity側も新Input Systemを中心に機能拡張を進めているためです。
特に、
- UI操作
- ゲームパッド対応
- リバインド
- マルチデバイス対応
を考えると、新Inputの方が後々ラクになります。
ただし、
- 小規模の試作
- 学習用ミニゲーム
- キーボードのみの超シンプル構成
なら、旧Inputでも十分作れるケースはあります。
なので、
- 「まずゲームを完成させたい」 → 旧InputでもOK
- 「今後もUnityを続ける」 → 新Input推奨
くらいの感覚で考えると整理しやすいですよ。
ちなみに私自身は、UIやゲームパッド対応を入れる時点で、新Input Systemのありがたみをかなり感じました。

特に「あとからSwitch対応したい」となった時、旧Input中心設計だと入力周りが一気に修正祭りになりやすいんですよね…。
Unity Input Systemの導入手順まとめ
新Input Systemは、パッケージを入れただけでは動きません。
特に初心者のうちは、
- インストールしただけで満足してしまう
- Active Input Handlingを変更していない
- Unity再起動を忘れる
このあたりで止まりやすいです。
ここでは、「最低限これをやれば動く」という順番で整理していきます。
Package ManagerからInput Systemを導入する
まずはInput Systemパッケージをインストールします。
Window > Package Managerを開く- 左上を
Unity Registryに変更 Input Systemを検索Installをクリック
インストール自体は数分で終わります。
ただし、ここで終わりではありません。
Active Input Handlingを変更する
Input Systemを有効化するには、Unity側へ「新Inputを使います」と教える必要があります。
インストール後、Unityからダイアログが表示された場合は、
Yes
を押せば自動設定されます。
もし表示されなかった場合は、手動で変更しましょう。
Edit > Project SettingsPlayerを開くOther Settingsを展開Active Input Handlingを変更
選択肢は主に3つあります。
| 設定 | 内容 |
|---|---|
| Input Manager | 旧Inputのみ使用 |
| Input System Package (New) | 新Inputのみ使用 |
| Both | 新旧両方を使用 |
新規プロジェクトなら、
「Input System Package (New)」がおすすめです。
一方で、既存プロジェクトを移行する場合は、最初だけ Both を使うケースもあります。
ただし、Bothは便利な反面、
- どちらの入力が動いているのか分かりにくい
- 入力競合が起きる
- デバッグが混乱しやすい
というデメリットもあります。
なので、最終的には新Inputへ統一する方が管理しやすいです。
設定変更後はUnityを再起動する
ここ、かなり重要です。
Active Input Handlingを変更した後は、Unityを再起動しないと正しく反映されません。
再起動を忘れると、
- Input Actionsが動かない
- PlayerInputが反応しない
- コンパイルエラーが出る
など、かなり謎な状態になります。
「設定は合ってるのに動かない…」という時、実は再起動忘れだった、というのは本当によくあります😂
導入直後に確認したい3つのポイント
Input System導入後は、次の3つを先に確認しておくと、後のトラブルをかなり減らせます。
- ConsoleにInput関連エラーが出ていないか
- Package ManagerでInput SystemがInstalledになっているか
- Active Input Handlingが正しく反映されているか
特にConsoleエラーは重要です。
入力が反応しない時、実はスクリプトエラーでUpdate自体が止まっているケースもあります。
「入力が壊れている」のではなく、「コード全体が止まっている」こともあるので、Consoleは最初に見る癖をつけておくと強いですよ。
初心者が最初にハマる設定ミス
私が初心者の方を見ていて、特に多いと感じるのはこのあたりです。
- 旧Inputコードを混在させる
- Both設定のまま原因が分からなくなる
- Input Actionsを保存していない
- PlayerInputへAssetをセットしていない
特にInput Actionsは、
Save Asset
を押し忘れると設定が消えます。

「さっきまで動いてたのに…」となる原因ランキング上位です。
Auto SaveをONにしておくと、かなり平和になります✨
Input Actionsの作り方と設定方法
Input Systemで一番重要なのが、Input Actions です。
ここをなんとなく設定してしまうと、
- Moveが動かない
- Jumpが反応しない
- ゲームパッドだけ効かない
- UI入力が壊れる
など、後からかなり混乱しやすくなります。
逆に言うと、Input Actionsの構造を理解できると、Input System全体がかなり整理されて見えてきます。
Input Actionsアセットを作成する
まずはInput Actionsアセットを作ります。
- Projectウィンドウで右クリック
Create > Input Actionsを選択- 好きな名前を付ける
たとえば、
PlayerControls
のような名前にすると分かりやすいです。
作成したアセットをダブルクリックすると、Input Actionsエディタが開きます。
最初はUIが少し複雑に見えますが、
- Action Map
- Action
- Binding
この3つの役割を分けて理解すると、一気に分かりやすくなります。
Action MapとActionの違い
初心者が最も混同しやすいポイントの1つです。
ざっくり言うと、
- Action Map = 操作カテゴリ
- Action = 個別の行動
です。
たとえば、
| Action Map | Action |
|---|---|
| Gameplay | Move / Jump / Attack |
| UI | Click / Navigate |
| Vehicle | Accelerate / Brake |
こんな感じでグループ分けします。
ここを分けておくと、
- ゲーム中だけ有効
- UI表示中だけ有効
- 乗り物操作中だけ有効
といった切り替えがしやすくなります。
逆に全部を1つのAction Mapへ詰め込むと、後半でかなり管理しづらくなります。
Button・Value・Pass Throughの違い
Actionを作成すると、Action Type を選ぶ場面があります。
ここも初心者が迷いやすいポイントですね。
- Button = 押す系
- Value = 値が変化する系
- Pass Through = 入力をそのまま流す系
たとえば、
| Action | おすすめType |
|---|---|
| Jump | Button |
| Attack | Button |
| Move | Value |
| Look | Value |
MoveをButtonにしてしまうと、Vector2として取得できず、移動処理が壊れる原因になります。
「Moveなのに値が取れない…」という時は、まずAction Typeを疑うといいですよ。
WASD移動は2D Vector Compositeを使う
キーボード移動では、通常のBindingではなく、
2D Vector Composite
を使うのが定番です。
設定すると、
- W = 上
- S = 下
- A = 左
- D = 右
を、ゲームパッドのスティックのような Vector2 として扱えます。
これによって、
Vector2 move = context.ReadValue<Vector2>();
のように、キーボードとゲームパッドを同じコードで処理できるようになります。
ここが新Input Systemのかなり便利なところです✨
Save Assetを忘れると設定が消える
Input Actionsで本当に多いミスがこれです。
編集後に、
Save Asset
を押していないと、設定が保存されません。
その結果、
- 昨日作ったBindingが消える
- Move設定が戻る
- PlayerInputでActionが見つからない
などが発生します。
最初はかなり混乱します😂
なので、Input Actionsを触る時は、
- Auto SaveをONにする
- 編集後に保存確認する
この2つを癖にしておくと安心です。
PlayerInputの使い方|初心者向け最短構成
Input Actionsを作ったあと、多くの人が次に迷うのが、
「で、これをどうやってゲームに接続するの?」
という部分です。
ここで登場するのが PlayerInput です。
最初は少しややこしく見えますが、役割を一言でいうと、
「Input Actionsとゲームオブジェクトをつなぐ橋渡し役」
ですね。
PlayerInputとは何をするコンポーネント?
PlayerInputを使うと、
- Input Actionsを自動で有効化
- 入力イベントを呼び出し
- デバイス切り替えを管理
してくれます。
つまり、
Moveが押されたらこの処理を呼ぶ
という流れを、かなり簡単に作れるんですね。
特に初心者のうちは、
- Enable忘れ
- Action Map切り替え忘れ
- イベント登録漏れ
で詰まりやすいので、PlayerInputを使うメリットはかなり大きいです。
PlayerInputを追加する手順
まずはプレイヤーオブジェクトへ追加しましょう。
- プレイヤーGameObjectを選択
Add ComponentPlayer Inputを追加
すると、InspectorにPlayerInput設定が表示されます。
ここでまず重要なのが、
Actions
欄です。
ここへ、作成したInput Actionsアセットをセットします。
これを忘れると、当然ながら何も動きません😂
Invoke Unity Eventsで動かす方法
最初は Behavior を、
Invoke Unity Events
にするのがおすすめです。
理由は、Inspector上でイベントが見えるからです。
たとえば、
- Move
- Jump
などのActionごとにイベント欄が表示されます。
そこへ、
- プレイヤーオブジェクト
- 呼び出したい関数
を登録すると、入力時に自動で関数が実行されます。
たとえば移動処理なら、
public void OnMove(InputAction.CallbackContext context)
{
Vector2 move = context.ReadValue<Vector2>();
}
のような形です。
この方法の良いところは、
- 「イベントが来ているか」が見える
- 設定ミスを発見しやすい
- Input Systemの流れを理解しやすい
点ですね。
最初から全部コードで管理するより、かなりデバッグしやすいです。
Send Messagesは使うべき?
PlayerInputには、
Send Messages
というBehaviorもあります。
これは、
OnMove()
のような特定の名前の関数を自動で探して呼ぶ仕組みです。
ただ、実務ではあまり好まれないことも多いです。
理由は、
- 関数名ミスで動かない
- IDE補完が弱い
- どこで呼ばれているか追いにくい
からです。
学習用途なら悪くないですが、長期運用を考えるなら Invoke Unity Events やコード制御の方が管理しやすいケースが多いですね。
PlayerInputが向いているケース
PlayerInputは特に、
- Unity初心者
- 小〜中規模ゲーム
- プロトタイプ制作
- 入力構造を学びたい段階
と相性が良いです。
逆に、
- 複雑な入力状態管理
- 高度な入力切り替え
- 大規模プロジェクト
になると、コード制御の方が柔軟になりやすいです。
まずはPlayerInputで全体像を理解して、その後コード制御へ進む流れがかなりおすすめですよ。
PlayerInputで動かない時の確認ポイント
PlayerInputで入力が反応しない時は、まずこの4つを確認してください。
- ActionsへInput Actionsアセットをセットしたか
- Default MapがGameplayになっているか
- Behaviorが想定通りか
- イベントへ関数登録したか
特に多いのが、
Default MapがUIのまま
というパターンです。
この状態だとGameplay側のMoveやJumpが動きません。
「入力壊れた!?」と焦る前に、Action Mapを確認すると一瞬で解決することがあります✨
ゲームパッド動作確認をするなら、Xbox系コントローラーがかなり扱いやすいです。
Input Systemの標準レイアウトとも相性が良く、検証もしやすいですよ。
Xbox Wireless Controller
✅ Amazonでチェックする|✅ 楽天でチェックする
Input Systemをコードで制御する方法
PlayerInputに慣れてくると、次に気になりやすいのが、
「コードだけで管理した方がよくない?」
という部分です。
実際、中〜大規模プロジェクトでは、コード制御を使うケースもかなり多いです。
特に、
- 入力状態を細かく制御したい
- Action Mapを動的切り替えしたい
- 入力管理を整理したい
という場合は、コード管理の恩恵が大きくなります。
Generate C# Classを有効化する
まずはInput Actionsアセットから、C#クラスを自動生成します。
- Input Actionsアセットを選択
- Inspectorの
Generate C# Classにチェック Applyを押す
すると、
PlayerControls.cs
のようなクラスが自動生成されます。
これによって、
controls.Gameplay.Move
のように、型安全な形でActionへアクセスできるようになります。
文字列指定よりミスが減るので、中規模以上ではかなり助かります。
Enable()しないと入力は動かない
コード制御で最も多いミスがこれです。
Input Actionsは、生成しただけでは動きません。
必ず、
Enable()
を呼ぶ必要があります。
たとえばこんな感じです。
private PlayerControls controls;
private void Awake()
{
controls = new PlayerControls();
}
private void OnEnable()
{
controls.Enable();
}
private void OnDisable()
{
controls.Disable();
}
ここを忘れると、
- Moveが反応しない
- performedが呼ばれない
- 入力値が全部0になる
などが起きます。
初心者のうちは、
「コードは合ってるのに動かない…」
となりやすいポイントですね。
逆に言うと、Enable() を理解するとInput Systemの構造理解がかなり進みます。
performed・started・canceledの違い
Input Systemでは、入力タイミングをイベントで受け取れます。
代表的なのがこの3つです。
| イベント | タイミング |
|---|---|
| started | 押し始め |
| performed | 入力成立時 |
| canceled | 離した時 |
たとえばチャージ攻撃なら、
- started → 溜め開始
- canceled → 発射
のような設計ができます。
このあたりは旧Inputよりかなり柔軟ですね。
長押し入力を使ったチャージ攻撃を作りたい場合は、こちらの記事もかなり相性が良いです。
PlayerInputとコード制御はどちらが良い?
これは「どちらが正解」というより、規模で考えると整理しやすいです。
| 向いているケース | おすすめ |
|---|---|
| 学習・小規模 | PlayerInput |
| プロトタイプ | PlayerInput |
| 中〜大規模 | コード制御 |
| 複雑な入力切り替え | コード制御 |
私の感覚だと、
- 「まずInput Systemを理解したい」 → PlayerInput
- 「設計を整理したい」 → コード制御
という流れがかなり自然です。
最初から全部コードでやろうとすると、Input Systemそのものの理解より、「なぜ動かないのか調査」で体力を持っていかれやすいんですよね…😂
入力管理をさらに強化したい場合
Unity標準Input Systemでもかなり強力ですが、
- 高度なリバインド管理
- 複数デバイス制御
- 入力デバッグ強化
- 長年使われている実績重視
を求める場合は、Rewired を使う開発者もいます。
特に商用タイトルや長期運用では、今でも根強い人気があります。
Rewired
✅アセットストアでチェックする
UI・ゲームパッド・スマホ対応のやり方
新Input Systemの強みが一番分かりやすく出るのが、
- UI操作
- ゲームパッド対応
- スマホ入力
このあたりです。
旧Input Manager時代は、それぞれ別対応になりやすかったのですが、新Inputではかなり統一的に扱えます。
ただし、設定ミスも増えやすいポイントなので、仕組みごと理解しておくのが大事です。
UIが反応しない原因はInput Moduleが多い
「ボタンがクリックできない」
Input System導入後、かなり多いトラブルです。
原因として特に多いのが、
EventSystemが旧Input用のまま
というケースです。
確認する場所は、
EventSystem
オブジェクトです。
ここに、
Standalone Input Module
が付いている場合は、旧Input用になっています。
新Input Systemを使う場合は、
Input System UI Input Module
へ置き換えましょう。
これを忘れると、
- UIだけクリックできない
- ゲームパッドUI操作が効かない
- ボタン選択移動が動かない
などが発生します。
初心者のうちは「コードが悪い」と思いがちですが、実はUIモジュール設定の問題だった、というケースがかなり多いです。
ゲームパッド対応はButton Southを使う
Input Systemでは、ゲームパッドボタンを“方角”で管理します。
たとえば、
| Input System名 | 実際のボタン |
|---|---|
| Button South | Xbox A / PS × |
| Button North | Xbox Y / PS △ |
| Button East | Xbox B / PS ○ |
| Button West | Xbox X / PS □ |
この仕組みのおかげで、
- Xbox
- PlayStation
- Switch系
などを、同じActionで扱いやすくなっています。
以前のInput Managerでは、コントローラーごとの差異をかなり意識する必要がありました。
ここは新Inputのかなり便利なポイントですね✨
スマホ入力はOn-Screen Controlsが便利
スマホ向けゲームでは、
- 仮想スティック
- 画面ボタン
が必要になることも多いです。
Input Systemには、
- On-Screen Stick
- On-Screen Button
が標準で用意されています。
Canvasへ配置してActionへ紐付けるだけで、かなり簡単に仮想操作UIを作れます。
特に便利なのが、
キーボード入力と同じActionを共有できること
です。
つまり、
- PCではWASD
- スマホでは仮想スティック
なのに、ゲーム側コードはほぼ同じで済みます。
ここもInput Systemの大きな強みですね。
複数デバイス対応で意識したいポイント
Input Systemは複数デバイス対応が強力ですが、UI設計は別問題として残ります。
たとえば、
- 「Press E」表示がゲームパッドだと不自然
- キーボード前提UIになっている
- 決定ボタン表記が機種ごとに違う
などですね。
Input取得は統一できても、“表示設計”は別途考える必要があります。

特にSwitch・PlayStation・Xboxでは決定ボタン文化が違うこともあるので、後半で慌てないように早めに意識しておくとラクですよ。
Unity Input Systemが動かない時の原因まとめ
Input Systemで一番心が折れやすいのが、
「設定したのに入力が反応しない」
という状態です。
しかもInput Systemは、
- 設定ファイル
- PlayerInput
- Action Map
- UI Module
- Enable状態
など、複数の要素が関係するので、「どこが原因なのか」が分かりづらいんですよね。
ただ、実際によくある原因はかなり固定されています。
ここでは、“最短で原因を切り分ける順番”で整理していきます。
最初に確認するべきチェックリスト
まずはこの5項目を確認してください。
- Active Input Handlingは新Inputになっているか
- Input ActionsをSave Assetしたか
- Enable()しているか
- PlayerInputへAssetをセットしたか
- Default Mapが正しいか
特に多いのが、
Default MapがUIのまま
というケースです。
この状態だと、Gameplay側のMoveやJumpが反応しません。
逆に、
UIだけ動かない
場合は、UI Module設定を疑うのが近道です。
Input Debuggerで原因を切り分ける
Input Systemでかなり便利なのが、
Input Debugger
です。
以下から開けます。
Window > Analysis > Input Debugger
ここでは、
- 接続中デバイス
- 押された入力
- 入力イベント
をリアルタイムで確認できます。
ここで入力反応が見えているなら、
「Unity自体は入力を受け取れている」
ということです。
つまり、
- Action設定
- PlayerInput
- コード
側に原因を絞れます。
逆にInput Debugger側でも反応がないなら、
- デバイス未接続
- Active Input Handling
- OS側認識問題
を優先して疑うべきです。
この切り分けができるだけで、調査時間がかなり短くなります✨
PlayerInputで反応しない時の原因
PlayerInput関連では、特にこのあたりが多いです。
| 原因 | 症状 |
|---|---|
| Behavior違い | イベントが呼ばれない |
| Action名ミス | 特定入力だけ動かない |
| Actions未設定 | 全部反応しない |
| Default Map違い | Gameplayだけ無効 |
特に Send Messages を使っている場合、
OnMove
のスペル違いだけで動かなくなります。
なので、初心者のうちは Invoke Unity Events の方が原因を追いやすいです。
UI入力だけ効かない時の原因
UI系で最も多いのは、
EventSystem設定ミス
です。
確認ポイントは、
- Input System UI Input Moduleになっているか
- Standalone Input Moduleが残っていないか
- CanvasにGraphic Raycasterがあるか
ですね。
特に旧UI設定が残っていると、
- ボタンが押せない
- ゲームパッドUI移動が効かない
- クリック反応しない
などが発生します。
「入力システムが悪い」というより、“UI側だけ旧設定だった”というケースがかなり多いです。
初心者が勘違いしやすい「正常動作」
Input Systemは、「正常だけど壊れて見える挙動」もあります。
たとえば、
- キーを離すとMoveが(0,0)へ戻る
- startedとcanceled両方呼ばれる
- performedが連続で呼ばれる
などですね。
最初は、
「イベントが二重に動いてる!?」
と焦りやすいのですが、実は仕様通りのケースも多いです。
特にValue型Actionは、“値が変わるたびに通知される”ので、旧Input感覚だと少し戸惑いやすいですね。

「バグか仕様か」を切り分けられるようになると、Input Systemの理解がかなり深まりますよ✨
Unity Input Systemは「構造理解」で一気に楽になる
新Input Systemは、最初だけ少し独特です。
特に、
- Action
- Action Map
- PlayerInput
- Enable()
など、新しい概念が一気に出てくるので、「難しそう…」と感じやすいんですよね。
でも、実際は
「入力キー」ではなく「行動」を管理している
と理解すると、一気に整理しやすくなります。
たとえば、
- Move
- Jump
- Attack
というActionへ、
- キーボード
- ゲームパッド
- スマホUI
を紐付けるだけで、複数デバイス対応がかなり自然に作れるようになります。
これが新Input Systemの大きな強みです。
最初は、
- PlayerInput
- Invoke Unity Events
- MoveとJumpだけ
くらいの最小構成から始めるのがおすすめです。
いきなり全部理解しようとすると、設定量の多さで混乱しやすいんですよね😂
逆に、
- Actionの役割
- Action Mapの切り替え
- Enable/Disableの意味
が見えてくると、Input Systemはかなり扱いやすくなります。
私自身、最初は「なんでこんなに複雑なんだろう…」と思っていました。
でも、
- UI操作
- ゲームパッド対応
- キーコンフィグ
- スマホ移植
を実際に入れ始めると、「なるほど、最初から全部まとめて管理するための仕組みなんだ」と実感しやすかったです。
特に後からゲームパッド対応を追加する時、新Input Systemはかなり助かります✨
Input Systemは、“なんとなく設定する”より、“構造を理解する”方が圧倒的に強いです。
最初は少し遠回りに見えても、
- Actionとは何か
- なぜEnableが必要なのか
- なぜUI Moduleを切り替えるのか
を理解しておくと、後半のトラブル対応がかなりラクになります。
入力周りはゲーム全体の土台になりやすいので、ここを整理できるとUnity開発そのものがかなり快適になりますよ✨
参考情報
- Unity Manual
- Unity Input System公式ドキュメント
- Unity Input Debugger
よくある質問(FAQ)
- Q初心者はPlayerInputとコード制御どちらがおすすめ?
- A
最初は
PlayerInputの方がかなり学びやすいです。理由は、
- Inspectorで状態が見える
- イベント確認しやすい
- 設定ミスを発見しやすい
からです。
Input Systemは「構造理解」が重要なので、最初から全部コードで管理すると、入力システムそのものより「動かない原因探し」で疲れやすいんですよね😂
一方で、
- 入力状態を細かく管理したい
- Action Mapを頻繁に切り替える
- 大規模ゲームを作る
場合は、コード制御の方が整理しやすくなるケースが多いです。
なので個人的には、
- 最初はPlayerInput
- 慣れたらコード制御
という順番がかなりおすすめです。
- QInput Systemは2Dゲームでも使うべき?
- A
2Dゲームでも十分メリットがあります。
特に、
- ゲームパッド対応
- UI操作
- キーコンフィグ
- スマホ移植
を少しでも考えているなら、新Input Systemはかなり相性が良いです。
逆に、
- 超小規模
- 学習用ミニゲーム
- 短期間プロトタイプ
なら、旧Inputでも十分作れるケースはあります。
ただ、Unityを継続して触っていくなら、新Inputに慣れておくメリットはかなり大きいです。
後からUIやゲームパッド対応を追加する時、「最初からInput Systemにしておけばよかった…」となること、実際かなり多いんですよね。








※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。