ContentExamplesプロジェクトのUI_CommonUIレベルのEnhancedInputのサンプルにおいて、「Triggering Enhanced Input Action」に設定されたInputActionに紐づいたゲームパッドのボタンを押しても反応しない。

【環境】

  • Windows11
  • UE5.6 ランチャー版
  • ContentExamplesプロジェクト
  • ゲームパッド:XBoxOneコントローラ

ContentExamplesプロジェクトの「UI_CommonUI」レベルのEnhancedInputのサンプルにおいて、「Triggering Enhanced Input Action」に設定されたInputActionに紐づいたゲームパッドのボタンを押しても反応しません。

【再現手順】

まず、こちらのページを参考に、

ProjectSettingsの「Enable Enhanced Input Support」をTrueにします。

[Image Removed]

それから、「UI_CommonUI」レベルをプレイして、最奥のEnhancedInputのサンプルの「AW_EnhancedInput」を開きます。

[Image Removed]

この画面(AW_EnhancedInputBottomPopup)で、「Spawn Center Popup」に対してゲームパッドのYボタンを押しても何も起きません(本来は、ポップアップウィンドウが開くと思うのですが)[Image Removed]ウィジェット側の設定は何もいじっておらずダウンロードしたときのままです。

「AW_EnhancedInputBottomPopup」のEventGraphの、このYボタンの入力イベントノードにブレークを張ってみましたが、処理がきていないようです。

[Image Removed]「Spawn Center Popup」には、「Triggering Enhanced Input Action」に「IA_UI_SpecificWidgetAction」が割り当てられています。

[Image Removed]また、「AW_EnhancedInputBottomPopup」自体にも「Input Mapping」に「IMC_UI_Specific」が割り当てられています。

[Image Removed]

こちら、何か設定の不備などございますでしょうか?

ご確認よろしくお願いします。

お世話になっております。

ご質問ありがとうございます。

(また、大変分かりやすい説明ありがとうございました)

本件ですが、ContentExamplesでUMGウィジェットを画面に出す共通処理の中に「Set Input Mode UI Only」が含まれているのが原因です。このノードが適用されますとウィジェットは入力イベントを受け取らなくなるため、Triggering Enhanced Input Actionに対応したノードも発火しなくなってしまいます。

[Image Removed]BP_EventDemoTrigger7の「Lock Input to UI」のチェックを外すことで、「Set Input Mode UI Only」が実行されなくなり、Yボタンが機能するようになるはずです。これがデフォルトでONになっているのは、ContentExamplesの設定ミスといえると思います。ご不便をおかけして申し訳ありません。

(本件はフィードバックしておきます)​

問題の「Set Input Mode UI Only」が実行されているロジックは MyCharacter_UMGのShowElementカスタムイベントに実装されておりますので、もし気になるようであればご確認ください。

以上、よろしくお願いいたします。​

ご回答ありがとうございます。

教えていただいた方法で無事、ゲームパッドのYボタンが効きました。

ありがとうございます。

追加で一点、自分の理解が正しいか確認させていただきたいのですが、

こちらのページに書かれているように、UCommonActivatableWidgetはInputConfigによって様々な入力モードやカーソルキャプチャなどを切り替えているため(実際にはUCommonUIActionRouterBase::ApplyUIInputConfig()で)、

  • UCommonActivatableWidgetを使う限りにおいては、自前でPC->ShowMouseCursorやSetInputModeUIOnly()をする必要はなく(むしろ、使うと今回のような不整合が起こり得る)、画面ごとにGetDesiredInputConfig()でやりたいことに合わせてInputConfigを設定すべき。

という理解で合っておりますでしょうか?

[Image Removed]

ご回答ありがとうございます!

大変参考になりました!

お世話になっております。

> こちらのページに書かれているように、UCommonActivatableWidgetはInputConfigによって様々な入力モードやカーソルキャプチャなどを切り替えているため(実際にはUCommonUIActionRouterBase::ApplyUIInputConfig()で)、

> ・UCommonActivatableWidgetを使う限りにおいては、自前でPC->ShowMouseCursorやSetInputModeUIOnly()をする必要はなく(むしろ、使うと今回のような不整合が起こり得る)、画面ごとにGetDesiredInputConfig()でやりたいことに合わせてInputConfigを設定すべき。

おおむねご認識いただいているとおりですが、リンク先のページにも書かれておりますように、Input Configの利用は必須ではなく、使用しないという選択肢も保証されております。

そのため、「Input Configを設定すべき」とまではいかず、「Input Configを使うかどうかは開発者の選択次第」「Input Configを使う場合は、自前でPC->ShowMouseCursorやSetInputModeUIOnly()をする必要はない」くらいのニュアンスにあるというのが、より公式的な回答になるかと存じます。

以上、よろしくお願いいたします。

回答のご確認ありがとうございました。

それでは、本件は回答済みとしてCloseさせていただきます。

また何かご不明点など出てきましたら、お気軽にEPSをご利用ください。

以上、よろしくお願いいたします。