Version: 2022.3
言語: 日本語
WebGL: ブラウザースクリプトとの対話
WebGL ビルドのデバッグとトラブルシューティング

WebGL の入力

ゲームパッドとジョイスティックのサポート

Unity WebGL は、HTML5 ゲームパッド API をサポートするブラウザーのゲームパッドとジョイスティック用に InputInputSystem をサポートしています。

一部のブラウザーは、アプリケーションがフォーカスされている間にエンドユーザーがデバイスと相互作用した後にのみ、入力デバイスへのアクセスを許可します。この種のセキュリティ対策は、エンドユーザーが、接続されたデバイスをブラウザーフィンガープリント目的で使用することを妨げます。このため、アプリケーションは、Input.GetJoystickNames() の呼び出しによる接続デバイスのチェック前に、ゲームパッド/ジョイスティックのボタンを押すようにユーザーに指示する必要があります。

古い入力システム用の WebGL ゲームコントローラーマッピングは、W3 仕様 と一致しており、ボタンのマッピングレイアウトは以下のようになっています。

ボタン 説明
buttons[0] 右クラスターの下ボタン = CROSS (X)
buttons[1] 右クラスターの右ボタン = CIRCLE
buttons[2] 右クラスターの左ボタン = SQUARE
buttons[3] 右クラスターの上ボタン = TRIANGLE

ノート: WebGL は W3 仕様 に準拠しているため、他のプラットフォームと一致しない場合があり、複数のプラットフォーム (Windows とウェブなど) を同時にターゲットにしている場合に独自の処理が必要になります。

タッチのサポート

Unity WebGL はまだ公式にはモバイルデバイスをサポートしていません (WebGL のブラウザー互換性 を参照) が、タッチをサポートするブラウザーやデバイスで Input.touch やその他の関連 API を実装します。デフォルトでは、モバイルデバイスは、UI 入力フィールドへのテキスト入力用に、タッチスクリーン上にスクリーンキーボードを表示します。この動作を無効にするには、WebGLInput.mobileKeyboardSupport プロパティを使用してください。

キーボード入力とフォーカスのハンドリング

デフォルトでは、Unity WebGL は、WebGL キャンバスがフォーカスされているかどうかに関わらず、ウェブページが受け取る全てのキーボード入力を処理します。これにより、エンドユーザーが、WebGL キャンバスをクリックすることなくキーボードベースのアプリケーションを使用できるようになります。

以下は、特定のキーボード入力に関するノートです。

キーボード入力の動作 説明
HTML 要素 (テキストフィールドなど) 一般的には、HTML 要素 (テキストフィールドなど) を導入すると、(それがキーボード入力を受け取るウェブページに含められた場合に) エラーが発生する可能性があります。Unity は、ページの他の部分が入力を受け取れる状態になる前に入力イベントを消費します。
HTML 要素がキーボード入力を受け取るようにするには、WebGLInput.captureAllKeyboardInputfalse に設定します。こうすることで、アプリケーションは、WebGL キャンバスにフォーカスがある場合にのみ入力を受け取るようになります。
Esc キー Esc キーはウェブ環境では保護されているため、Safari のように全画面モードに切り替えるための使用をブロックするブラウザーや、Google Chrome のように動作が予測できないブラウザーもあります。ブラウザーが全画面モードになっている時は、Esc キーは全画面モードを終了する動作のために予約されています。ブラウザーの種類によっては、Esc キーをクリックしてもブラウザーからアプリケーションに転送するイベントがトリガーされるとは限りません。
HideMobileInput TextMeshPro (TMP としても知られる) 入力フィールドの HideMobileInput オプションは、ウェブプラットフォームには影響しません。これは、ブラウザーで仮想キーボードをトリガーするためにはテキスト入力フィールドが必要なためです。ウェブプラットフォームは、Unity プレーヤーがテキスト入力を想定している時に、テキスト入力フィールドをインスタンス化して仮想キーボードをトリガーします。これは、他のプラットフォーム同様に、仮想キーボードの上に表示されます。仮想キーボードはモバイルのテキスト入力フィールドに依存するため、ウェブプラットフォームでこの表示が隠れることはありません。

モバイルセンサーのサポート

Unity WebGL は公式にはモバイルデバイスをサポートしていません (WebGL のブラウザー互換性 参照) が、タッチをサポートするブラウザーやモバイルデバイスで、以下のセンサーをサポートしています。

重要: ブラウザーは安全なコンテキストでのみセンサーの入力を許可します。つまり、ページを HTTPS で提供する必要があります。唯一の例外は http://localhost です。

その他の参考資料

WebGL: ブラウザースクリプトとの対話
WebGL ビルドのデバッグとトラブルシューティング