デバッグ
想定どおりに動作しない部分がある場合に問題のトラブルシューティングを行う最も簡単な方法は、Unity エディターで Input Debugger を使用することです。Input Debugger では、エディターおよび接続されたプレイヤーの両方の Input System のアクティビティにアクセスできます。
Input Debugger を開くには、Unity のメインメニューから Window > Analysis > Input Debugger を選択します。
Input Debugger
Input Debugger には、Input System の状態の明細がツリー形式で表示されます。
項目 | 説明 |
---|---|
Devices | 現在システムに存在するすべての nput Device のリストと、サポートされていない/認識されない Device のリスト。 |
Layouts | 登録済みのすべての Control レイアウトおよび Device レイアウトのリスト。これは、サポートされているハードウェアと、入力ハードウェアの特定部分を表す方法に関する情報のデータベースです。 |
Actions | 1 つ以上の Action が有効になっている場合に限り、再生モードでのみ表示されます。 現在有効になっているすべての Action のリストと、それらのバインド先の Control。 Action のデバッグ を参照してください。 |
Users | 1 つ以上の InputUser インスタンスが存在する場合にのみ表示されます。ユーザー管理 に関するドキュメントを参照してください。現在アクティブなすべてのユーザーのリスト。ユーザーごとに、アクティブな Control Scheme と Device、関連付けられているすべての Action、それらの Action のバインド先の Control も表示されます。 PlayerInput の実行には InputUser が使用されます。このため、PlayerInput コンポーネントの使用時には、このリストに各プレイヤーのエントリーが追加されます。ユーザーと PlayerInput のデバッグ を参照してください。 |
Settings | 現在アクティブな Input System 設定。 |
Metrics | Input System のリソース使用量に関する統計。 |
Device のデバッグ
Input Debugger ウィンドウで、Devices のリストに移動し、いずれかの Input Device をダブルクリックします。これにより、その Device に関する情報を表示するウィンドウが開きます。ここには、各 Control のリアルタイムの状態情報も含まれます。
Device ウィンドウの上部には、選択された Device について、名前、製造元、シリアル番号などの一般情報が表示されます。
Controls セクションには、Device の Control のリストが、それぞれの状態と共に表示されます。これで、Input Device から Input System に渡されたデータが想定どおりであるかどうかを検証できるため、入力の問題のデバッグに役立ちます。このパネルの上部には、以下の 2 つのボタンがあります。
HID Descriptor: HID プロトコルを使用して接続するデバイスにのみ表示されます。クリックすると、Device の詳細な HID 仕様と、個々の論理コントロールを表示するウィンドウが開きます。
State: Device の現在の状態を新しいウィンドウで表示します。これは、ビューに表示される情報と同じですが、リアルタイムで更新されないため、必要時に入力状態データのスナップショットを取得し、時間をかけて調べることができます。
Events セクションには、Device によって生成されたすべての 入力イベント のリストが表示されます。リスト内のいずれかのイベントをダブルクリックすると、そのイベントが発生した時点の Device の状態を完全に調査できます。異なる時点の Device の状態を並べて違いを比較するには、複数のイベントを選択して右クリックし、コンテキストメニューの Compare をクリックします。
Action のデバッグ
Input Debugger ウィンドウの Actions リストには、有効になっているすべての Action が表示されます。このリストが表示されるのは、少なくとも 1 つの Action が有効になっていて、エディターが再生モードの場合のみです。アクティブにバインドされた Control が Action にある場合は、Action の横の矢印をクリックすると、それらの Control のリストが表示されます。これは、Binding のマップ先が、意図した Control に正しくマップされているかどうかのデバッグを行う場合に役立ちます。Unity による Binding から Control へのマップ方法の詳細については、Binding の解決 に関するドキュメントを参照してください。
ノート:
InputUser
に属する Action は、ここには表示されません。代わりに Users リストに表示されます。
ユーザーと PlayerInput のデバッグ
InputUser
のインスタンスが存在する場合 (PlayerInput
を使用すると、PlayerInput
インスタンスごとに 1 つが暗黙で作成されます)、Input Debugger の Users リストには、それぞれのインスタンスが、組み合わされている Device およびアクティブな Action と共に表示されます。リストに表示された Device と Actionは、デバッグウィンドウの Devices および Actions リストの場合と同様に動作します。
レイアウトのデバッグ
Input Debugger ウィンドウの Layouts リストには、登録されているすべての Control レイアウトと Device レイアウト の明細が表示されます。これは、サポートされているハードウェアと、入力ハードウェアの特定の部分の表現方法に関する知識が集約されたデータベースです。新しい Device のマッピング 行う場合に、それが Input System でどのように表現されるかを確認するために役立ちます。
リモートでのデバッグ
Input Debugger は、リモートのコンピューターまたは Device で実行しているプレイヤーに接続できます。これにより、プレイヤーからの入力アクティビティをエディターで確認できます。この接続では、Unity プロファイラーがプレイヤーへの接続時に使用するものと同じ PlayerConnection
メカニズムが使用されます。
ノート: 現在のところ、プレイヤーでの入力のデバッグは、接続されたプレイヤーからの Device とイベントの表示に制限されています。プレイヤーからの Action や入力ユーザーなど、その他の入力関連データの表示はサポートされません。
ビルドされたプレイヤーからのリモート Device を表示するには、Input Debugger ウィンドウで Remote Devices ドロップダウンリストを開きます。このリストには、接続可能なリモートのプレイヤーインスタンスが (ある場合は) 表示されます。同じリストが、プロファイラーウィンドウとコンソールウィンドウにも表示され、すべての接続が、これらのウィンドウ間で共有されます。プレイヤーが接続されている場合は、同じドロップダウンリストで Show remote devices を有効にすることができます。プレイヤーが接続されていて、かつ Show remote devices が有効になっている場合は、Input Debugger ウィンドウの Devices リストが Local セクションと Remote セクションに分割されます。Remote セクションには、接続されているプレイヤーからの Input Device がすべて表示され、ローカル Device と同じように、Device の状態とイベントをリアルタイムで調べることができます。
Input Visualizer
Input System パッケージに付属する Visualizers サンプルには、画面上の Visualizer を使用して、さまざまな Input System 要素の状態をリアルタイムで監視する、各種のコンポーネントが含まれています。
このサンプルをインストールするには、Package Manager ウィンドウで Input System パッケージに移動し (インストール を参照)、Visualizers サンプルの横にある Import in project をクリックします。
このサンプルは、以下の 2 つの Visualizer コンポーネントを提供します。
InputControlVisualizer
1 つの Control の現在の状態をリアルタイムで視覚化します。複数の Control Visualizer を作成して、複数の Control の状態を視覚化できます。例については、サンプル内の GamepadVisualizer
、MouseVisualizer
、または PenVisualizer
の各シーンを参照してください。
InputActionVisualizer
1 つの Action の現在の状態をリアルタイムで視覚化します。複数の Action Visualizer を作成して、複数の Action の状態を視覚化できます。また、Action の現在の値や、Action を現在駆動している Control を表示したり、Interaction (Interaction) の状態を長期にわたって追跡したりすることもできます。例については、サンプル内の SimpleControlsVisualizer
シーンを参照してください。
Device Simulator
Device Simulator ウィンドウを使用すると、シミュレートされたデバイス画面へのマウス入力とペン入力がタッチスクリーン入力に変換されます。Device Simulator では、独自のタッチスクリーンデバイスが使用されます。これは、Device Simulator ウィンドウと共に作成されて破棄されます。
シミュレートされたタッチスクリーン入力と、ネイティブのマウス入力やペン入力との競合を防ぐために、Device Simulator では、ネイティブのマウスデバイスおよびペンデバイスがすべて無効になります。
Unity Remote (iOS、Android)
ノート: Unity Remote では、ジョイスティックとゲームパッドがまだサポートされていません。モバイルデバイスからのジョイスティック/ゲームパッド入力はエディターで認識されません。
ノート: これには Unity 2021.2.18 以降が必要です。
Unity Remote は iOS および Android で使用可能なアプリケーションであり、Unity エディターの実行中にモバイルデバイスを使用して入力できるようにするものです。アプリケーションの詳細とインストール方法は Unity マニュアル で説明されています。
Unity Remote アプリケーションを試す場合は、Input System パッケージに付属する "Unity Remote" サンプルを インストール できます。
エディターが再生モードのときに Unity Remote アプリケーションに接続すると、InputDevice.remote
フラグが true に設定された、以下の Device が追加されます。
Touchscreen
(タッチスクリーン)Accelerometer
(加速度センサー)
モバイルデバイスにジャイロが搭載されている場合は、以下も追加されます。
Gyroscope
(ジャイロスコープ)AttitudeSensor
(姿勢センサー)LinearAccelerationSensor
(線形加速度センサー)GravitySensor
(重力センサー)
これらの Device はローカルの Device と同じように使用できます。これらの Device が接続されたモバイルデバイスからの入力を受け取ると、モバイルデバイスはエディターで実行するゲームが描画した出力を受信します。
Accelerometer
デバイスは自動的に有効化されるため、InputSystem.EnableDevice
を明示的に呼び出す必要はありません。加速度センサーで Sensor.samplingFrequency
を使用して、Unity Remote からのサンプリング頻度を設定しても、効果はありません。
上記のリストに含まれているその他のセンサーは、ローカルセンサーと同様に、InputSystem.EnableDevice
を使用して明示的に有効にする必要があります。これらのセンサーで Sensor.samplingFrequency
を使用して、Unity Remote からのサンプリング頻度を設定すると、その設定がデバイスに伝達されますが、1 つのデバイスで設定した頻度がすべてのデバイスに適用されることに注意する必要があります。
デバイスからのタッチ座標は、エディター内のゲームビューの画面座標に変換されます。