スポンサーリンク
Unity入門・基礎

Unityの使い方㉑新Input System完全ガイド|導入方法・使い方・動かない時の対処法まとめ

Unity入門・基礎
  1. はじめに
  2. Unity Input Systemは「Action中心」で理解すると迷わない
    1. 新Input Systemは「キー」ではなく「行動」を管理する
    2. 最初はPlayerInputを使うのが一番ラク
    3. Input Systemが動かない原因はほぼ決まっている
  3. Unity新Input Systemとは?旧Inputとの違いを解説
    1. 新Input Systemは「複数デバイス前提」で作られている
    2. 旧Input Managerとの違い
    3. 初心者は旧Inputとどちらを使うべき?
  4. Unity Input Systemの導入手順まとめ
    1. Package ManagerからInput Systemを導入する
    2. Active Input Handlingを変更する
    3. 設定変更後はUnityを再起動する
    4. 導入直後に確認したい3つのポイント
    5. 初心者が最初にハマる設定ミス
  5. Input Actionsの作り方と設定方法
    1. Input Actionsアセットを作成する
    2. Action MapとActionの違い
    3. Button・Value・Pass Throughの違い
    4. WASD移動は2D Vector Compositeを使う
    5. Save Assetを忘れると設定が消える
  6. PlayerInputの使い方|初心者向け最短構成
    1. PlayerInputとは何をするコンポーネント?
    2. PlayerInputを追加する手順
    3. Invoke Unity Eventsで動かす方法
    4. Send Messagesは使うべき?
    5. PlayerInputが向いているケース
    6. PlayerInputで動かない時の確認ポイント
  7. Input Systemをコードで制御する方法
    1. Generate C# Classを有効化する
    2. Enable()しないと入力は動かない
    3. performed・started・canceledの違い
    4. PlayerInputとコード制御はどちらが良い?
    5. 入力管理をさらに強化したい場合
  8. UI・ゲームパッド・スマホ対応のやり方
    1. UIが反応しない原因はInput Moduleが多い
    2. ゲームパッド対応はButton Southを使う
    3. スマホ入力はOn-Screen Controlsが便利
    4. 複数デバイス対応で意識したいポイント
  9. Unity Input Systemが動かない時の原因まとめ
    1. 最初に確認するべきチェックリスト
    2. Input Debuggerで原因を切り分ける
    3. PlayerInputで反応しない時の原因
    4. UI入力だけ効かない時の原因
    5. 初心者が勘違いしやすい「正常動作」
  10. Unity Input Systemは「構造理解」で一気に楽になる
    1. 参考情報
  11. よくある質問(FAQ)
    1. 関連記事:

はじめに

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パッケージをインストールします。

  1. Window > Package Manager を開く
  2. 左上を Unity Registry に変更
  3. Input System を検索
  4. Install をクリック

インストール自体は数分で終わります。

ただし、ここで終わりではありません。

Active Input Handlingを変更する

Input Systemを有効化するには、Unity側へ「新Inputを使います」と教える必要があります。

インストール後、Unityからダイアログが表示された場合は、

Yes

を押せば自動設定されます。

もし表示されなかった場合は、手動で変更しましょう。

  1. Edit > Project Settings
  2. Player を開く
  3. Other Settings を展開
  4. 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アセットを作ります。

  1. Projectウィンドウで右クリック
  2. Create > Input Actions を選択
  3. 好きな名前を付ける

たとえば、

PlayerControls

のような名前にすると分かりやすいです。

作成したアセットをダブルクリックすると、Input Actionsエディタが開きます。

最初はUIが少し複雑に見えますが、

  • Action Map
  • Action
  • Binding

この3つの役割を分けて理解すると、一気に分かりやすくなります。

Action MapとActionの違い

初心者が最も混同しやすいポイントの1つです。

ざっくり言うと、

  • Action Map = 操作カテゴリ
  • Action = 個別の行動

です。

たとえば、

Action MapAction
GameplayMove / Jump / Attack
UIClick / Navigate
VehicleAccelerate / Brake

こんな感じでグループ分けします。

ここを分けておくと、

  • ゲーム中だけ有効
  • UI表示中だけ有効
  • 乗り物操作中だけ有効

といった切り替えがしやすくなります。

逆に全部を1つのAction Mapへ詰め込むと、後半でかなり管理しづらくなります。

Button・Value・Pass Throughの違い

Actionを作成すると、Action Type を選ぶ場面があります。

ここも初心者が迷いやすいポイントですね。

  • Button = 押す系
  • Value = 値が変化する系
  • Pass Through = 入力をそのまま流す系

たとえば、

ActionおすすめType
JumpButton
AttackButton
MoveValue
LookValue

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を追加する手順

まずはプレイヤーオブジェクトへ追加しましょう。

  1. プレイヤーGameObjectを選択
  2. Add Component
  3. Player 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#クラスを自動生成します。

  1. Input Actionsアセットを選択
  2. Inspectorの Generate C# Class にチェック
  3. 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 SouthXbox A / PS ×
Button NorthXbox Y / PS △
Button EastXbox B / PS ○
Button WestXbox 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
  • 慣れたらコード制御

という順番がかなりおすすめです。

Q
Input Systemは2Dゲームでも使うべき?
A

2Dゲームでも十分メリットがあります。

特に、

  • ゲームパッド対応
  • UI操作
  • キーコンフィグ
  • スマホ移植

を少しでも考えているなら、新Input Systemはかなり相性が良いです。

逆に、

  • 超小規模
  • 学習用ミニゲーム
  • 短期間プロトタイプ

なら、旧Inputでも十分作れるケースはあります。

ただ、Unityを継続して触っていくなら、新Inputに慣れておくメリットはかなり大きいです。

後からUIやゲームパッド対応を追加する時、「最初からInput Systemにしておけばよかった…」となること、実際かなり多いんですよね。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク