入力
ClientSimでは、すべての入力呼び出しを1つのクラスに集約し、入力の処理とイベントの送信を行っています。ClientSimInputManagerは新しいInput Systemを使用しており、イベント駆動型の入力を可能にしています。PlayerInputコンポーネントを使用することで、以下に示す入力バインディングに基づいた特定の入力イベントにアクセスできます。Unityの新しいInput Systemパッケージはデフォルトでは含まれておらず、有効にするにはUnity側で特別な設定が必要となるため、Input Systemへのすべての参照は定義条件(define conditions)でラップされています。これにより、新しいプロジェクトにインポートした際のエラーを防いでいます。
入力イベント
「EventDispatcher」と同様に、InputManagerも各システムが直接リッスンできる独自のイベントを備えています。これらのイベントがEventDispatcher本体から分離されている理由は、すべての入力イベントが類似したパラメータを持っていること、およびイベントを通じてブロードキャストされず、リッスン側のシステムが更新された軸の値をポーリングする必要がある入力値が存在するためです。
入力バインディング
Input Systemでは、さまざまな操作スキームに対して異なるバインディングを設定することも可能です。以下に含まれているKeyboardMouse、Gamepad、および実験的なXR Controllerのバインディングを参照してください。なお、Unity 2019のInputSystemにおけるXR入力バインディングは非常に限定的である点に注意してください。さまざまなVRコントローラーを適切にサポートするには、InputManagerを拡張する必要があります。
UdonInput
UdonInputシステムはInputManager Prefabの一部であり、InputManager内の適切なイベントをサブスクライブすると同時に、移動や視点操作に関する入力をポーリング(定期確認)します。Unityが入力イベントを送信するタイミングと、Udonがそれを受信すべきタイミングの兼ね合いから、ボタンベースの入力はすべてキューに入れられ、フレームの後半で移動や視点操作の入力と同時に処理されます。このキューイングと処理を行うことで、VRChatと同様に、UdonのUpdateメソッドが呼び出された後に入力イベントを発生させることが可能になっています。
最終更新: