Version: Unity 6.0 (6000.0)
言語 : 日本語
UI Document component
UI Toolkit を使用した入力およびイベントシステムに関する FAQ

ランタイム UI イベントシステムと入力処理

UI Toolkit は、イベントシステムを使用して入力を処理し、すべてのアクティブなパネルにイベントを送信します。このシステムは入力イベントを処理し、UI 内の適切な要素に送信します。

異なる入力システムで UI Toolkit を使用する

Unity には、古い機能の Input Manager と新しい Input System パッケージの 2 つの入力処理システムがあります。Input Manager は Unity プラットフォームの中心となる部分であり、Input System パッケージをインストールしていない場合は、デフォルトのシステムとして機能します。新しい Input System パッケージは、柔軟性を高め、幅広いデバイスとプラットフォームをサポートします。

UI Toolkit のイベントシステムは、両方のシステムからイベントを受信できます。システムは、アクティブな入力処理システムを自動的に検出し、それに応じてイベントを処理します。

アクティブな入力処理システムの設定

プロジェクトでアクティブな入力処理システムを設定するには、以下のようにします。

  1. Edit > Project Settings > Player を選択します。

  2. Player ウィンドウの Other Settings > Configuration で、Active Input Handling を以下のいずれかに設定します。

    • Input Manager (Old): 古い機能の Input Manager を使用します。
    • Input System Package (New): Input System パッケージを使用します。
    • Both: 使用可能な場合は Input System パッケージを使用します。それ以外の場合は、古い機能の Input Manager にフォールバックします。

対象のプロジェクトで Input System パッケージがアクティブになっている場合、UI Toolkit は、そのイベントを入力システムで定義されたアクションから自動的に派生させます。アクションを設定するには、Edit > Project Settings > Input System Package に移動します。

Input Manager による入力処理の設定

Input Manager による入力処理を設定するには、Edit > Project Settings > Input Manager に移動します。

Input Manager の設定
Input Manager の設定

Horizontal および Vertical の軸を設定することが可能ですが、これは UI Toolkit で NavigationMoveEvents がどのように生成されるかに影響します。Submit および Cancel のアクションを修正して、UI Toolkit で NavigationSubmitEvent および NavigationCancelEvents を生成することもできます。

Input System パッケージによる入力処理の設定

Input System パッケージで入力処理を設定するには、Edit > Project Settings > Input System Package に移動します。

Input System の設定
Input System の設定

Input System パッケージは、Input Manager と比較してより高度な設定が可能です。プロジェクト全体のアクションアセットを使用して、UI Toolkit 向けにNavigationMoveEventsPointerMoveEvent (“UI / Point” action)、PointerDownEventPointerUpEvent (“UI / Click”)、WheelEvent (“UI / ScrollWheel”)、NavigationSubmitEvent、および NavigationCancelEvent が生成される方法を設定することができます。

異なる入力システムで UI Toolkit と uGUI を使用する

UI Toolkit の UI Document および uGUI のコンポーネントは同時に使用できます。異なる入力システムで UI Toolkit (および uGUI) を使用する場合は、適切な入力モジュールを選択する必要があります。

以下の表は、それぞれの入力システムの使用に必要なコンポーネントと設定の概要を示しています。

使用方法 必要なコンポーネント Active Input Handling
古い機能の Input Manager による UI Toolkit 要素 デフォルトのイベントシステム (Scene コンポーネントは不要) Input Manager (Old)
Input System パッケージによる UI Toolkit 要素 デフォルトのイベントシステム (Scene コンポーネントは不要) Input System Package (New) または Both
古い機能の Input Manager による UI Toolkit 要素と uGUI コンポーネント Standalone Input ModuleEventSystem コンポーネント Input Manager (Old) または Both
Input System パッケージによる UI Toolkit 要素と uGUI コンポーネント Input System UI Input ModuleEventSystem コンポーネント Input System Package (New) または Both

最初の uGUI 要素を Scene に追加すると、EventSystem および Standalone Input Module が自動的に Scene に追加されます。

EventSystem は uGUI に属しています。これは、置き換えが可能な Input Manager コンポーネントを通じて、古い機能の Input Manager または Input System パッケージのいずれかから派生した uGUI イベントに対応します。

Standalone Input Module は、イベントを UI Toolkit 要素にディスパッチします。

プロジェクトで Input System パッケージをアクティベートすると、Standalone Input Module の代わりに Input System UI Input Module が追加されます。Input System UI Input Module とそれに付随する EventSystem により、UI Toolkit と uGUI の両方の要素からのイベントが正しくディスパッチされるようになります。

EventSystem はシーンの読み込みとイベントの実行を担当します。Input System UI Module は入力を処理し、イベントの実行を開始します。Standalone Input Module または Input System UI Input Module を他の入力モジュールで変更することで、使用する入力の種類を変更できます。使用される入力モジュールに関係なく、すべてのイベントは EventSystem を通じて実行されます。

シーンで uGUI EventSystem を追加して有効にすると、UI Toolkit はそれを検出して、各 UI Toolkit パネルに対して 2 つの uGUI 互換コンポーネント (PanelRaycasterPanelEventHandler) を作成します。これらのコンポーネントは、uGUI イベントと UI Toolkit イベントの間の仲介として機能します。これらのコンポーネントが存在する場合は、UI Toolkit のビルトインの自動入力処理が無効になります。つまり、これらのコンポーネントが存在する場合、UI Toolkit はこれらのコンポーネントを利用して入力イベントを処理します。

シーンで複数の Panel Settings アセットを使用している場合、イベントシステムは、ソート順に基づいてパネルにポインターイベントをディスパッチします。UI Toolkit は、パネルのソート順を uGUI キャンバスおよびその他の有効なレイキャストターゲットのソート順と比較することで、ポインターイベントの受信者を決定します。このプロセスにより、UI Toolkit 要素、uGUI オブジェクト、またはシーン内の別のオブジェクトがイベントを受信するかが決定されます。同様に、UI Toolkit は EventSystemcurrentSelectedGameObject を使用してフォーカスを管理します。UI Toolkit パネルでフォーカスを取得したい場合は、他の uGUI オブジェクトからフォーカスを削除します。また、uGUI オブジェクトが選択されると、UI Toolkit パネルは自動的にフォーカスを失います。

ポインターイベントは、パネルがそれに応答するまでパネルを伝播します。イベントを使用してフォーカスされた要素に影響を与える最初のパネルが、イベントシステムにおいてフォーカスされたパネルになります。このパネルは、別のイベントによって違うパネルがフォーカスされたパネルになるまでキーボードイベントを受け取ります。

ノート: イベントの伝播を停止することと、要素にフォーカスすることは別のアクションです。例えば、ボタンをクリックすると伝播が停止し、そのボタンだけが押下に応答するようになります。ただし、ボタンやクリックされたフォーカス可能な要素にフォーカスが移動するなど、他のデフォルトのクリックアクションを妨げることはありません。

追加リソース

UI Document component
UI Toolkit を使用した入力およびイベントシステムに関する FAQ