表示テーマ
入力とPlayer割り当て
生入力APIはキーやボタンそのものを調べ、InputActionsは「移動」「決定」のようなActionへ機器を割り当てて調べます。ゲームの操作変更や複数人対応にはActionとPlayer割り当てを使用します。
InputActions
- Projectの入力Action設定でAction名と対応機器を用意します。
- 「プロジェクト設定 → 入力デバイス」で機器・Dead Zoneなどを調整します。
- Playerごとのゲームパッドとキーボード・マウスを割り当てます。
- C#から名前または取得済みIDで読み取ります。
ReadAxisは1軸、ReadVector2は2軸、IsPressedは押下中、WasPressed/WasReleasedはそのframeでの変化です。Action名は設定と完全一致させます。
生入力
Input.GetKeyは押し続けている状態、GetKeyDownは押したframe、GetKeyUpは離したframeです。マウスとゲームパッドにも同様のAPIがあります。
先頭ゲームパッドだけを見るAPIと、番号を指定するAPIを区別します。Playerに機器を割り当てているゲームではPlayerInputを使用してください。
UIで入力を止める
Canvasの入力ブロックは、そのPlayerのInputActionsとゲーム用生入力へ適用されます。UI自身の操作は維持します。
- ブロックなし
- UI操作を消費したframe
- Canvasが階層上でアクティブかつ有効な間
同じPlayerのCanvasのどれかがブロック条件を満たせばゲーム側を止めます。Alphaが0という理由だけでは、Canvas表示中ブロックを解除しません。
フォーカスと振動
バックグラウンド入力が無効なら、アプリ外へフォーカスが移るとゲーム入力と振動を止めます。復帰時に押し続けたキーから新しい押下イベントを人工的に作らない方式です。
PlayerInputの振動は割り当てたゲームパッドへ送ります。返されたHandleを保持して停止できます。ゲームパッドが接続されていない場合も想定してください。