ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
UMG Button を選択不可にする 3 つの方法
UE5 の UMG ウィジェットでボタンの選択を防ぐには、目的に応じて 3 つの方法があります:
| 方法 | クリック | 見た目 | レイアウト | 用途 |
|---|---|---|---|---|
| Is Enabled = false | 無効 | グレーアウト | 保持 | 「現在使えない」表現 |
| Visibility = Hit Test Invisible | 無効 | 通常表示 | 保持 | 表示だけしたい時 |
| Visibility = Hidden | 無効 | 非表示 | 保持 | 空間は残したい |
| Visibility = Collapsed | 無効 | 非表示 | 消失 | 完全に消したい |
方法 1: Is Enabled = false(最も標準)
エディタで設定
- UMG エディタでボタンを選択
- Details パネル → Behavior セクション
- 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 で独自ブラシを指定できます:
- Button を選択 → Details → Appearance
- Style を展開
- 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 < RequiredStage | Stage Select Buttons |
| 所持金不足 | Gold < Price | Buy Button |
| サーバ接続中 | IsConnecting == true | Login Button |
| クールダウン中 | CooldownRemaining > 0 | Skill 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)を作って共通化すると、複数ボタンで一括変更可能です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?