CommonUI で拡張入力を使用する

拡張入力を CommonUI の入力システムに組み込む方法について解説します。

前提トピック

このページは以下のトピックへの知識があることを前提にしています。まず以下のトピックの内容についてご確認をお願いします。

CommonUI プラグイン は、Enhanced Input アクションを限定的にサポートします。

UE 5.2 の時点で、拡張入力のサポートは CommonUI の他の機能ほど十分にテストされていません。現時点では、この機能を使用するタイトルのシッピングは推奨していません。

1. 必要な設定

このページでは、CommonUI について次の設定ステップを実行済みであることを前提としています。

  • CommonUI プラグインと Enhanced Input プラグインの両方を有効にする。

  • ビューポート クラスを CommonGameViewportClient に設定する。

  • Accept や Back アクション用に InputData を設定する。

2. CommonUI の拡張入力を有効にする

CommonUI プラグインと Enhanced Input プラグインを有効にしたら、[Project Settings (プロジェクト設定)] を開いて [Game (ゲーム)] > [Common Input Settings (共通入力設定)] の順に移動し、[Enable Enhanced Input Support (拡張入力サポートを有効)]true に設定します。これにより、2 つのプラグインが連携するためのサポートが有効になります。

Enable Enhanced Input in Project Settings

3. CommonUI 用の Enhanced Input アクションを設定する

Enhanced Input アクションは、継続中 のイベントや トリガー済み のイベントなどの特殊なバリアントを含む入力イベントを、どこへでもバインドすることができます。ただし、FaceButtonTopAcceptBack などの UI アクション バインディングの大部分をグローバルにバインドすることは、予期しないタイミングでのユーザーの入力の結果として意図しないイベントが発生する可能性があるため、望ましくなく、無秩序となります。CommonUI では、この問題を 汎用的なアクション で解決します。汎用的なアクションは UI 要素にバインドされますが、CommonUI の拡張入力イベントをトリガーしません。

CommonUI 内に Enhanced Input アクションを設定するには、次の手順を実行します。

  1. コンテンツ ブラウザで汎用的な 入力アクション を作成し、「IA_UI_GenericAccept」という名前を付けます。

    Select Input Action asset type

  2. 入力アクションに PlayerMappableKeySettings を追加します。

  3. PlayerMappableKeySettings[Settings (設定)] で、ICommonMappingContextMetadataInterface を実装するオブジェクトに [Metadata (メタデータ)] フィールドを設定します。

    Player Mappable Key Settings

    CommonUI 以外のものに対して入力アクション メタデータが必要になる場合があります。そのため、柔軟性を保つ目的で ICommonMappingContextMetadataInterface を実装するクラスを使用することをお勧めします。

  4. コンテンツ ブラウザで右クリックし、[Miscellaneous (その他)] > [Data Asset (データ アセット)] をクリックしてデータ アセットを作成します。

  5. データ アセット クラスとして ICommonMappingContextMetadataInterface を実装するメタデータ クラスを選択します。「Metadata UI_IA_GenericMetadata」という名前を付けます。UCommonMappingContextMetadata をデフォルトとして使用するか、カスタム仕様のアセット クラスを使用することができます。

    Common Mapping Context

  6. UI_IA_GenericMetadata を開き、設定を次のように編集します。

    • Is Generic Input Action: True

    • Per Action Enhanced Input Metadata: IA_UI_GenericAccept

    • Nav Bar Priority: 10

    image alt text

    CommonUI で入力アクションがブロードキャストされないようにするには、Is Generic Input Action にチェックを入れます。

    このデータ アセットは、CommonUI アクション データを設定できるメタデータ オブジェクトを提供します。すでに CommonUI に慣れている場合は、CommonUI のデータ テーブルの Nav Bar Priority 設定を見たことがあるかもしれません。UCommonInputMetadata から継承することにより、追加のメタデータで入力アクションを拡張することもできます。

    Per Action Enhanced Input Metadata を使用すると、アクションごとに 1 つのアセットを作成するのではなく、1 つのアセットで複数のアクション用のメタデータを処理することができます。

  7. ステップ 5 ~ 6 を繰り返しますが、今回は Is Generic Input Action のチェックをオフにします。このメタデータの名前を「UI_IA_SpecificMetadata」にします。これにより、汎用的ではない任意の入力アクションで使用できるメタデータ クラスになります。

  8. 入力アクションを開きます。メタデータを UI_IA_GenericMetadata に設定します。入力アクションに、CommonUI で機能するために必要な情報がすべて含まれるようになりました。

    Generic Input Action

  9. メタデータの Is Generic Input Action が有効になっていない入力アクションの場合、他の入力アクションのように入力をイベントにバインドすることができます。

    Non-generic Input Action

4. CommonUI の入力マッピング コンテキスト (IMC) を作成する

CommonUI の入力マッピング コンテキスト (IMC) は、他の IMC と同様に動作します。入力マッピング コンテキストを作成するには、コンテンツ ブラウザを右クリックして、[Input (入力)] > [Input Mapping Context (入力マッピング コンテキスト)] の順にクリックします。次の図は、CommonUI で使用する IMC の例です。

Input Mapping Context

UI に IMC が使用されていることを明確にするため、「IMC_UI_GenericActions」のような名前にすることをお勧めします。

5. CommonUI で入力アクションと入力マッピング コンテキストを使用する

入力アクションは、以前に DataTableRows を使用して入力情報を指定したすべての場所で使用できます。主な例を以下に示します。

  • CommonButtonBase。

    Common Button Base

  • これは、UI ではない入力アクションのキーを表示できます。

    Common Action Widget

  • 共通 UI 入力データ。ここでデフォルトのナビゲーション アクションが定義されます。

    Common UI Input Data

これらの設定が表示されない場合は、[CommonUI の Enable Enhanced Input (拡張入力を有効)] 設定が true になっていることを確認します。

アクティブ化可能なウィジェットでは、IMC を指定してアクティブ化や非アクティブ化の際に適用したり削除したりすることができます。構成を整えるため、他の最上位のゲーム IMC を適用する場合は必ず汎用的な UI IMC を適用することをお勧めします。

IMC specified in an Activatable Widget

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル