7.

UE5 UMG ボタン無効化完全ガイド (Is Enabled / Visibility / Style / Focus)

編集
この記事の要点
  • UMG Button を選択不可にするには Is Enabled = false が基本。クリックも Hover も無効化
  • Blueprint からは Set Is Enabled ノード。動的に切り替えられる
  • 見た目を変えたいなら Style → Disabled のブラシ/色を編集
  • Visibility での無効化: Hidden(見えない/レイアウト維持)/ Collapsed(空間も消す)/ Hit Test Invisible(見えるがクリック不可)
  • 複数ボタンの一括管理: Vertical/Horizontal Box の子供を Loop + Set Is Enabled

UMG Button を選択不可にする 3 つの方法

UE5 の UMG ウィジェットでボタンの選択を防ぐには、目的に応じて 3 つの方法があります:

方法クリック見た目レイアウト用途
Is Enabled = false無効グレーアウト保持「現在使えない」表現
Visibility = Hit Test Invisible無効通常表示保持表示だけしたい時
Visibility = Hidden無効非表示保持空間は残したい
Visibility = Collapsed無効非表示消失完全に消したい

方法 1: Is Enabled = false(最も標準)

エディタで設定

  1. UMG エディタでボタンを選択
  2. Details パネル → Behavior セクション
  3. Is Enabled のチェックを外す

ボタンはグレーアウト表示になり、クリックも Hover Animation も Focus も無効化されます。

Blueprint から動的に切替

イベントグラフで:
  [Button_StartGame] → [Set Is Enabled]
                       In Bool: false

ノード詳細:
  ターゲット: Button_StartGame
  In Is Enabled: false

C++ から

// MyHUDWidget.cpp
if (UButton* Btn = Cast<UButton>(GetWidgetFromName(TEXT("Button_StartGame"))))
{
    Btn->SetIsEnabled(false);
}

// 条件付き
Btn->SetIsEnabled(PlayerLevel >= RequiredLevel);

方法 2: Visibility プロパティ

説明
Visible表示 + クリック可(既定)
Hidden非表示だが領域は保持、クリック不可
Collapsed非表示 + 領域も消える、クリック不可
Hit Test Invisible表示されるがマウスイベントを通さない
Self Hit Test Invisible自身は不可、子は受け取れる

Blueprint で動的切替

[Button_StartGame] → [Set Visibility]
                     In Visibility: Hit Test Invisible

用途別の選び方

  • 「機能はまだない、見せたくない」 → Collapsed
  • 「条件未達でグレー表示しておきたい」 → Is Enabled = false(推奨)
  • 「アイコンとして表示するだけ、押せないはず」 → Hit Test Invisible
  • 「動的に出現/消失するが UI のずれを防ぎたい」 → Hidden

Disabled 状態の見た目をカスタマイズ

Is Enabled = false で自動的にグレーアウトしますが、Style → Disabled で独自ブラシを指定できます:

  1. Button を選択 → Details → Appearance
  2. Style を展開
  3. Disabled ブラシを変更(色 / 画像 / ティント)
// C++ で Style の Disabled 色を変える
FButtonStyle Style = Btn->GetStyle();
Style.Disabled.TintColor = FSlateColor(FLinearColor(0.3f, 0.3f, 0.3f, 1.0f));
Btn->SetStyle(Style);

フォーカス(Tab / コントローラ)制御

キーボード Tab / ゲームパッドでフォーカスが当たってしまう場合:

Button Details →
  Behavior:
    [✓] Is Focusable        ← OFF にするとフォーカス対象から除外

C++:
  Btn->SetIsFocusable(false);

カーソル形状を変える

Button Details →
  Behavior:
    Cursor: Default / Hand / Crosshairs / GrabHand / SlashedCircle …

Disabled 風に Slashed Circle にすると分かりやすい:
  Cursor = Slashed Circle

複数ボタンの一括管理

VerticalBox 内の全ボタンを無効化

[VerticalBox_Menu] → [Get All Children Of Class]
                     Class: Button
                     → [For Each Loop]
                       → [Set Is Enabled]
                         In Bool: false

C++

TArray<UWidget*> Children;
VerticalBox_Menu->GetSlots(); // Slot ベース
for (UPanelSlot* Slot : VerticalBox_Menu->GetSlots())
{
    if (UButton* Btn = Cast<UButton>(Slot->Content))
    {
        Btn->SetIsEnabled(false);
    }
}

// 名前で取得
const TCHAR* Names[] = { TEXT("Btn_Start"), TEXT("Btn_Settings"), TEXT("Btn_Quit") };
for (auto N : Names)
{
    if (UButton* Btn = Cast<UButton>(GetWidgetFromName(N)))
        Btn->SetIsEnabled(false);
}

条件付き無効化の典型例

シナリオ判定対象ボタン
ステージ未開放PlayerProgress < RequiredStageStage Select Buttons
所持金不足Gold < PriceBuy Button
サーバ接続中IsConnecting == trueLogin Button
クールダウン中CooldownRemaining > 0Skill Button
初回チュートリアル!IsTutorialDone大半のボタン

Property Binding(自動連動)

UMG Designer 上で Is Enabled の右に Bind ドロップダウンを開き、関数や変数にバインドすると、Tick ベースで自動更新されます:

Bind → Create Binding → 関数を作成

UFUNCTION(BlueprintCallable)
bool IsBuyButtonEnabled()
{
    return PlayerGold >= ItemPrice;
}

注意: Property Binding は毎フレーム評価されるためコスト高。多用するならイベント駆動で Set Is Enabled を呼ぶ方が良い。

FAQ

Q: Disabled にしても色が変わらない
A: Style → Disabled ブラシを Normal と同じにしてあるとそのまま見える。Tint Color を 0.5 程度に下げると典型的なグレーアウト表現に。

Q: ボタンの On Clicked が反応しない
A: Is Enabled、Visibility(Hit Test Invisible 含む)、親の Visibility、親の Is Enabled すべて確認。親が Disabled だと子も無効。

Q: ゲームパッドのフォーカスがスキップされない
A: Is Enabled OFF + Is Focusable OFF の両方を設定してください。さらに、UMG 全体の Input Mode が UI Only か Game And UI かも影響します。

Q: Disabled の見た目を統一したい
A: Button Style Asset(USlateWidgetStyleAsset)を作って共通化すると、複数ボタンで一括変更可能です。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ブループリントでWidgetに引数を追加する方法
  2. Blueprintで特定のクラスのWidgetを閉じる方法
  3. Widgetの前後関係を設定する方法
  4. ウィジェットの画像を選択するとウィジェットを閉じる方法
  5. マウスを動かせるUIを作成する方法
  6. ウィジェットのボタンに文字を書く方法
  7. BPでウィジェットのボタンを選択できなくする方法
  8. ウィジェットの背景ブラーについて
  9. リストビュー (ListView)
  10. EntryWidgetClass
  11. ウィジェットで一部の領域を部品化して再利用する方法

最近更新/作成されたページ