0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ActivatableWidget内のボタン入力が反応する条件の検証

0
Last updated at Posted at 2026-08-09

概要

CommonUIプラグインの ActivatableWidget の入力が反応する状態をまとめました。
設定が多く組み合わせと操作デバイスの切替によって反応が変わります。

検証環境

UE5.8.1
PIE再生環境

ウィジェット構成

WBP_BoundActionButton

CommonBoundActionButton継承
InputActionTriggerに任意のキーを指定
ここではWキーとゲームパッドFaceButtonTop(XboxならYボタン)を割り当て。OnClickedでログ出力

WBP_ActivatableWidget

CommonActivatableWidget継承
WBP_BoundActionButtonを内包

WBP_All

WBP_ActivatableWidgetを4つ入れた状態
Activate状態とVisiblity状態の組み合わせ

ActivatableWidget Activate Visiblity
1 Activate Visible
2 Activate NotHittestable(Self&Children)
3 Deactivate Visible
4 Deactivate NotHittestable(Self&Children)

image.png

検証内容

BlueprintのActorをレベルに追加し、ActorのBeginplayでWBP_AllをCreateWidgetし、AddToViewportをする
GameViewportClientClass CommonGameViewportClientを指定

入力の反応は以下の状態の時に調査

  • PIE再生直後
  • UI上のボタンを押した時
  • マウスをビューポートにキャプチャした時
  • ゲームパッドの操作をした後
    で結果をまとめる

1. 初期状態

UIの反応

WBP マウスクリック InputActionTrigger フォーカス移動(キーボード) フォーカス移動(ゲームパッド)
Acticate&Visible 反応する 反応する 反応する 反応する
Activate&NotHittestable 反応しない 反応しない 反応しない 反応しない
Deactivate&Visible 反応する 反応しない 反応する 反応する
Deactivate&NotHittestable 反応しない 反応しない 反応しない 反応しない

WASD/スティックによるプレイヤー操作

マウスのViewportキャプチャ WASD移動 マウスカメラ向き スティック移動 スティックカメラ向き
キャプチャしない 反応しない 反応しない 反応しない 反応しない
UIボタン押下後 ASDのみ反応する。Wは押し続けると反応する 反応しない 反応しない 反応しない
キャプチャする ASDのみ移動する。Wは推し続けると移動する 反応する 反応しない 反応しない
キャプチャ後にパッド操作切替後(再キャプチャ不可) 反応しない 反応しない 反応しない 反応しない

2. InputModeをMenuにする

UIの反応

WBP マウスクリック InputActionTrigger フォーカス移動(キーボード) フォーカス移動(ゲームパッド)
Acticate&Visible 反応する 反応する 反応する 反応する
Activate&NotHittestable 反応しない 反応しない 反応しない 反応しない
Deactivate&Visible 反応する 反応しない 反応する 反応する
Deactivate&NotHittestable 反応しない 反応しない 反応しない 反応しない

WASD/スティックによるプレイヤー操作

マウスのViewportキャプチャ WASD移動 マウスカメラ向き スティック移動 スティックカメラ向き
キャプチャしない 反応しない 反応しない 反応しない 反応しない
UIボタン押下後 ASDのみ反応する。Wは押し続けると反応する 反応しない 反応しない 反応しない
キャプチャする ASDのみ移動する。Wは押し続けると移動する 反応する 反応しない 反応しない
キャプチャ後にパッド操作切替後(再キャプチャ不可) 反応しない 反応しない 反応しない 反応しない

IgnoreMoveInput,IgnoreLookInputを有効

マウスのViewportキャプチャ WASD移動 マウスカメラ向き スティック移動 スティックカメラ向き
キャプチャしない 反応しない 反応しない 反応しない 反応しない
UIボタン押下後 ASDのみ反応する。Wは押し続けると反応する 反応しない 反応しない 反応しない
キャプチャする ASDのみ移動する。Wは押し続けると移動する 反応する 反応しない 反応しない
キャプチャ後にパッド操作切替後(再キャプチャ不可) 反応しない 反応しない 反応しない 反応しない

3. InputModeをGameにする

UIの反応

WBP マウスクリック InputActionTrigger フォーカス移動(キーボード) フォーカス移動(ゲームパッド)
Acticate&Visible 反応する キーボードのみ反応する。パッド操作切替後反応しない 反応する 反応する
Activate&NotHittestable 反応しない 反応しない 反応しない 反応しない
Deactivate&Visible 反応する 反応しない 反応する 反応する
Deactivate&NotHittestable 反応しない 反応しない 反応しない 反応しない

WASD/スティックによるプレイヤー操作

マウスのViewportキャプチャ WASD移動 マウスカメラ向き スティック移動 スティックカメラ向き
キャプチャしない 反応しない 反応しない 反応しない 反応しない
キャプチャする ASDのみ移動する。Wは押し続けると移動する 反応する 反応する 反応する
キャプチャ後にパッド操作切替後(再キャプチャ不可) 反応する 反応しない 反応する 反応する

IgnoreMoveInput,IgnoreLookInputを有効

マウスのViewportキャプチャ WASD移動 マウスカメラ向き スティック移動 スティックカメラ向き
キャプチャしない 反応しない 反応しない 反応しない 反応しない
UIボタン押下後 ASDのみ反応する。Wは押し続けると反応する 反応しない 反応しない 反応しない
キャプチャする ASDのみ移動する。Wは押し続けると移動する 反応する 反応しない 反応しない
キャプチャ後にパッド操作切替後(再キャプチャ不可) 反応しない 反応しない 反応しない 反応しない

4. InputModeをAllにする

UIの反応

WBP マウスクリック InputActionTrigger フォーカス移動(キーボード) フォーカス移動(ゲームパッド)
Acticate&Visible 反応する 反応する 反応する 反応する
Activate&NotHittestable 反応しない 反応しない 反応しない 反応しない
Deactivate&Visible 反応する 反応しない 反応する 反応する
Deactivate&NotHittestable 反応しない 反応しない 反応しない 反応しない

WASD/スティックによるプレイヤー操作

マウスのViewportキャプチャ WASD移動 マウスカメラ向き スティック移動 スティックカメラ向き
キャプチャしない 反応しない 反応しない 反応しない 反応しない
UIボタン押下後 ASDのみ反応する。Wは押し続けると反応する 反応しない 反応しない 反応する
キャプチャする ASDのみ移動する。Wは推し続けると移動する 反応する 反応する 反応する
キャプチャ後にパッド操作切替後(再キャプチャ不可) ASDのみ移動する。Wは押し続けると移動する 反応しない 反応する 反応する

IgnoreMoveInput,IgnoreLookInputを有効

マウスのViewportキャプチャ WASD移動 マウスカメラ向き スティック移動 スティックカメラ向き
キャプチャしない 反応しない 反応しない 反応しない 反応しない
UIボタン押下後 ASDのみ反応する。Wは押し続けると反応する 反応しない 反応しない 反応しない
キャプチャする ASDのみ移動する。Wは推し続けると移動する 反応する 反応しない 反応しない
キャプチャ後にパッド操作切替後(再キャプチャ不可) 反応しない 反応しない 反応しない 反応しない

InputActionTriggerの例外

DPad-Up/Down/Left/Rightはフォーカスされている場合はナビゲーションが優先される。
InputActionTriggerに設定しても反応しない。
フォーカスしていないなら反応する。

検証内容の補足

レベルブループリントで特定のキー入力後にWBP_AllをCreateWidgetし、AddToViewportをする。
GameViewportClientClass CommonGameViewportClientを指定

この場合は、キャプチャ後にパッド操作切替の結果と同じになる。
キー入力をするために、ビューポートをクリックしてマウスをキャプチャしてからの操作になる。

ActivatableWidgetをどう使うべきか

ボタン入力に対する反応を見ると、InputActionTriggerについてはActivate時のみ有効なものです。
一方マウスクリックについてはDeactivateでも反応してしまいました。
多くの場合は、Deactivate時にはNotHitTestable にすることで別のUIに操作が反応してしまう事故を防げるでしょう。

ゲームの入力を止めたい場合

GetDesiredInputConfig でInputModeをMenuにすると、ゲーム側の入力を止めてくれます。
多くの場合はこちらでいいでしょう。

リアルタイムな動作をしたい場合

HUD的な要素で入力を受け取って表示を更新するような場合、InputModeをAllにしてUI側で入力処理も込みで実装するといいでしょう。
Allにしておくと入力の仕様変更があるたびにゲーム側を変更する必要がなくなり、UI側だけで完結できそうです。
InputModeをGameにしてゲーム側に処理してもらうこともありますが、それなら通常のUserWidgetで作成するのが余分な機能もなくていいと思います

所感

ActivateしてInputModeをMenuにしたといっても、ゲーム側の入力を防ぐわけではないのが混乱するところに思います。
Deactivateであっても、マウスクリックは反応する、ナビゲーションにも反応する。

Deactivateで完全に反応させたくないならNotHitTestable(Self&Children)にする が重要な点です。
Disabledのフラグもあるのでそちらを使ってもいいでしょう。
個人的にはDeactivateは入力を受け付けないと一括管理するのがわかりやすいのではないかと思います。
Disabledはリストなどで並べて表示しているが使えない状態に使うべきかなと思います。

PIE環境の場合、再生直後、UI上のボタンを押した時、ビューポートへのキャプチャ、パッド操作の切替でプレイヤー操作の反応が色々変わってしまいます。
WASD移動はエディタ上の移動操作が優先されて残っているように思います。
キーボードマウス操作前提のゲームの場合に、PIE中ではUIを開いたのにゲーム側の操作ができるという挙動になって混乱しそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?