入力設定
- Update Mode
- Background Behavior
- Filter Noise on .current
- Compensate Orientation
- デフォルト値のプロパティ
- Supported Devices
- プラットフォーム固有の設定
- Play Mode Input Behavior
プロジェクトごとに個別に Input System を設定するには、Unity のメインメニューから Edit > Project Settings… > Input System Package に移動します。
Input System では入力設定がアセットに保存されます。プロジェクトに入力設定アセットが含まれていない場合は、Settings ウィンドウで Create settings asset をクリックして作成します。プロジェクトに複数の設定アセットが含まれている場合は、ウィンドウの右上隅にある歯車のメニューを開き、使用するアセットを選択します。このメニューを使用して、追加の設定アセットを作成することもできます。
ノート: Unity では、これらの設定に対する変更は、プロジェクトの保存時に保存されます。
このページでは、それぞれの入力設定について詳しく説明します。
Update Mode
これは、Input System による入力処理のタイミングを決定する基本的な設定です。
Input System では、まったく異なる 3 つの方法のいずれかで入力が処理されます。
型 | 説明 |
---|---|
Process Events In Dynamic Update |
現在のフレームレートによって決定される不規則な間隔でイベントが処理されます。 |
Process Events In Fixed Update |
固定長の間隔でイベントが処理されます。これは、MonoBehaviour.FixedUpdate の動作と一致します。間隔の長さは Time.fixedDeltaTime によって決定されます。 |
Process Events Manually |
イベントが自動的には処理されません。代わりに、InputSystem.Update() が呼び出されるたびに入力が処理されます。 |
ノート: この他に、
InputUpdateType.BeforeRender
(XR トラッキング Device の遅延更新) とInputUpdateType.Editor
(EditorWindow の場合) という 2 つのタイプの更新が実行されます。これらのどちらのタイプの更新でも、アプリケーションによる入力の方法が変更されることはありません。
Background Behavior
アプリケーションのフォーカス の処理方法を決定します。つまり、フォーカスが失われたとき、または復帰したときの動作と、アプリケーションが前面にない場合の入力の動作を設定します。
この設定は、プロジェクトの プレイヤー設定 で "Run In Background" が有効になっている場合にのみ効果があります。この設定は、一部のプラットフォームでのみサポートされます。Android や iOS などのプラットフォームでは、アプリケーションが前面にない間はゲームが実行されません。
エディターでは、ゲームビューにフォーカスがあるかどうかにかかわらず、Player Loop が実行され続けるため、"Run In Background" が常に有効になっていると見なされることに注意してください。また、デスクトッププラットフォームの開発プレイヤーでは、ビルドプロセスの間、この設定が強制的に有効になります。
ノート: エディターでは、
Play Mode Input Behavior
がBackground Behavior
にさらに影響します。詳細については、バックグラウンドとフォーカス変更の動作 を参照してください。特に、どのデバイスがcanRunInBackground
と見なされるかは、Play Mode Input Behavior
設定に部分的に左右されます。
設定 | 説明 |
---|---|
Reset And Disable Non Background Devices |
フォーカスが失われると、canRunInBackground としてマークされていないすべての Device で ソフトリセット を実行した後、それらを 無効 にします。バックグラウンドで実行可能としてマークされた Device は影響を受けません。フォーカスが復帰すると、無効にしたすべての Device を 再び有効化 し、それらの Device で現在の状態を更新するために 同期リクエスト を発行します。Device に同期リクエストを発行しても応答がない場合は、Device の ソフトリセット を実行します。 これがデフォルト設定です。 |
Reset And Disable All Devices |
フォーカスが失われると、すべての Device で ソフトリセット を実行した後、それらを 無効 にします。 フォーカスが復帰すると、すべての Device を 再び有効化 し、各 Device で現在の状態を更新するために 同期リクエスト を発行します。デバイスが同期リクエストに応答しない場合は、ソフトリセット を実行します。 |
Ignore Focus |
フォーカスが失われたときに何も行いません。フォーカスが復帰すると、すべての Device で 同期リクエスト を発行します。 |
フォーカス動作は、フォーカスの変更に対して Action がどのように動作するかに影響します。Device がリセットされると、その Device の Control にバインドされている Action はキャンセルされます。これにより、例えば、ユーザーが W、A、S、D キーのいずれかを押している間にフォーカスが失われたときに、ゲーム内でユーザーが制御しているキャラクターが動き続けるのを防ぐことができます。このキャンセルは、Action がトリガーされないようにして実行されます。つまり、ボタンの解放時に Action がトリガーされるように設定されていても、押されている状態のボタンが Device のリセット によってリセットされるときは、Action がトリガーされません。
Filter Noise On Current
この設定はデフォルトで無効になっており、API の .current
プロパティ (Gamepad.current
など) を使用するアプリケーションにのみ関係します。これらのプロパティをアプリケーションで使用しない場合は、この設定を無効のままにしてください。有効にすると、不要なオーバーヘッドが増加します。
Device で入力が発生するたびに、その Device がシステムによって .current
に設定されます。例えば、新しい入力を Gamepad
が受け取ると、そのゲームパッドに Gamepad.current
が割り当てられます。
Device によっては入力値が頻繁に変動するものがあり、何も操作していない場合でも入力が発生することがあります。例えば、PS4 DualShock コントローラーにはジャイロが組み込まれているため、継続的な入力が確実に生成されます。つまり、Xbox と PS4 の両方のコントローラーが接続されており、ユーザーが Xbox コントローラーを使用している場合でも、PS4 コントローラーが継続的に入力を受け取り、current になります。
これを防ぐには、ノイズフィルタリングを有効にします。この設定が有効な場合は、アプリケーションが入力を受け取ると、その入力が値変動 (ノイズ) のある Control (InputControl.noisy
) を持つ Device に由来するかどうかシステムによって判定されます。由来する場合はさらに、その入力に、値変動ありとしてフラグ付けされていない Control に対する状態の変更が含まれているかどうかも判定されます。含まれている場合は、その Device が current になります。それ以外の場合も、入力はアプリケーションによって消費され、Device にも認識されますが、Device が current になることはありません。
ノート: システムでは現在、ほとんどの形式の値変動は検出されませんが、ゲームパッドスティックの値変動は検出されます。つまり、スティックが少しでも揺れ動くと、その動きがデッドゾーンの制限内であっても、Device は current になります。ただし、これでスティックが作動状態になるとは限りません。ほとんどのゲームパッドでは、デバイス全体の動きに伴う、スティックの多少の動きは許容されます。
Compensate Orientation
この設定を有効にすると、センサー から報告される回転値は、以下のように、Z 軸を中心として回転されます。
画面の向き | 回転値に対する効果 |
---|---|
ScreenOrientation.Portrait |
値は変わりません。 |
ScreenOrientation.PortraitUpsideDown |
値は 180 度回転されます。 |
ScreenOrientation.LandscapeLeft |
値は 90 度回転されます。 |
ScreenOrientation.LandscapeRight |
値は 270 度回転されます。 |
この設定は、以下のセンサーに影響します。
Gyroscope
(ジャイロスコープ)GravitySensor
(重力センサー)AttitudeSensor
(姿勢センサー)Accelerometer
(加速度センサー)LinearAccelerationSensor
(線形加速度センサー)
デフォルト値のプロパティ
プロパティ | 説明 |
---|---|
Default Deadzone Min | Stick Deadzone または Axis Deadzone プロセッサーのデフォルトの最小値。プロセッサーに明示的に min 値が設定されていない場合に使用されます。 |
Default Deadzone Max | Stick Deadzone または Axis Deadzone プロセッサーのデフォルトの最大値。プロセッサーに明示的に max 値が設定されていない場合に使用されます。 |
Default Button Press Point | ボタン Control およびさまざまな Interaction のデフォルトの pressPoint。アナログの物理入力を備えたボタン Control (ゲームパッドのトリガーなど) では、ボタンが押されているとシステムに認識されるように、どの程度まで押し下げたままにする必要があるかを設定します。 |
Default Tap Time | Tap および MultiTap Interaction のデフォルトの継続時間。タッチスクリーン Device で、タップと新しいタッチを区別するためにも使用されます。 |
Default Slow Tap Time | SlowTap Interaction のデフォルトの継続時間。 |
Default Hold Time | Hold Interaction のデフォルトの継続時間。 |
Tap Radius | タッチスクリーン Device で、2 本指タップが、同じタッチ操作のタップである (一方の指が新しいタッチではない) と見なされる最大距離。 |
Multi Tap Delay Time | MultiTap Interaction のタップ間のデフォルトの遅延時間。タッチスクリーン Device で、マルチタップをカウントするためにも使用されます (TouchControl.tapCount を参照してください)。 |
Supported Devices
プロジェクトでは通常、既知の一連の入力方法がサポートされます。例えば、モバイルアプリではタッチのみをサポートし、コンソールアプリケーションではゲームパッドのみをサポートすることが考えられます。また、あるクロスプラットフォームアプリケーションでは、ゲームパッド、マウス、キーボードをサポートするが、XR Device のサポートは必要でない場合があります。
エディターの UI に表示されるオプションを絞り込んだり、アプリケーションで使用しない入力 Device の作成や入力の消費を避けたりするために、サポートされる Device のセットをプロジェクトごとに制限できます。
Supported Devices が空の場合、制限は適用されません。つまり、Unity で認識されるあらゆる Device が Input System によって加えられ、その入力が処理されます。ただし、Support Devices に 1 つ以上のエントリーが含まれている場合は、リスト内のいずれかのタイプに一致する Device のみが加えられます。
ノート: Supported Devices のリストが変更されると、必要に応じて Device が削除されるか、再び追加されます。使用可能な Device に関する情報は常にシステムで保持されているため、接続されている限り、どの Device も完全に失われることはありません。
リストに Device を加えるには、Add (+) アイコンをクリックし、表示されるメニューから Device を選択します。
Abstract Devices には、"Keyboard" や "Mouse" など、一般的な Device の抽象化が含まれます。Specific Devices には、具体的なハードウェア製品が含まれます。
エディターでのオーバーライド
エディターでは、アプリケーションでサポートされない入力 Device を使用できると便利である場合があります。例えば、アプリケーションでゲームパッドのみがサポートされる場合に、エディターでタブレットを使用できます。
Supported Devices に含まれていない場合に、ローカルで使用可能な Device をすべて、エディターで強制的に追加するには、Input Debugger (メニュー: Window > Analysis > Input Debugger) を開き、Options > Add Devices Not Listed in 'Supported Devices' を選択します。
この設定はユーザー設定として保存されます (同じプロジェクトを開く他のユーザーには、この設定が表示されません)。
プラットフォーム固有の設定
iOS/tvOS
- Motion Usage
デバイスの 歩数計 へのアクセスを管理します。有効にすると、この設定で指定した Description 文字列がアプリケーションの Info.plist に加えられます。
エディター
Play Mode Input Behavior
エディターが再生モードのときに、どのように入力が処理されるかを決定します。プレイヤーとは異なり、エディターでは、ゲームビューにフォーカスがあるかどうかにかかわらず、エディターがアクティブである限り、Unity (およびその入力バックエンド) が動作し続けます。この設定は、どのゲームビューにもフォーカスが ない 場合 (したがって、Application.isFocused
が false になり、プレイヤーがバックグラウンドで実行されていると見なされる場合) の入力の動作を決定します。
設定 | 説明 |
---|---|
Pointers And Keyboards Respect Game View Focus |
ポインター および キーボード Device でのみ、ゲームビューにフォーカスが必要です。その他の Device の入力は、ゲームビューのフォーカスにかかわらず、アプリケーションにルーティングされます。 この設定では、基本的に、デフォルトでエディター UI の操作に使用されないすべての入力がゲームにルーティングされます。このため、ゲームパッド などの Device からは、再生モード時に常にアプリケーションに入力されますが、例えば、キーボードから入力するには、ゲームビューウィンドウに明示的にフォーカスを設定する必要があります。 これがデフォルトの設定です。 |
All Devices Respect Game View Focus |
すべての Device でゲームビューにフォーカスが必要です。どのゲームビューウィンドウにもフォーカスがない場合は、すべての入力がアプリケーションではなく、エディターに送られます。このため、他の EditorWindow でこれらの (ゲームパッドなどからの) 入力を受け取ることができます。 |
All Device Input Always Goes To Game View |
エディターへの入力はすべて無効になり、入力がゲームビュー専用と見なされます。さらに、Background Behavior がそのまま適用され、プレイヤーの場合と同様に実行されます。特定の状況で Device がプレイヤーで無効になると、その Device はエディターでも無効になります。この設定では、プレイヤーの動作とエディターの動作が最も近くなります。ただし、EditorWindow では、Device からの入力を検出できなくなる点に注意してください (これは一般に、エディターでの IMGUI および UITK 入力には影響しません。これらは、Input System からの入力を消費しないためです)。 |