
Unreal Engine 5 で
「NPCに近づいて Eキーを押すと会話UIが表示される」
という仕組みを作ったので、今日やったことを手順としてまとめます。
Blueprint初心者でも そのまま真似すれば動く ことを重視しています。
Contents
完成イメージ
- NPCに近づく
- Eキーを押す
- 画面に会話UI(Widget)が表示される
- 二重に表示されない



4
① 会話用Widgetを作る(WBP_Talk)
まず 表示するUIそのもの を作ります。
手順
- コンテンツドロワーで右クリック
- User Interface → Widget Blueprint
- 名前を
WBP_Talkにする - ダブルクリックして開く
中身
- Canvas Panel(初期状態でOK)
- Text(または Text Box)を1つ置く
- 例:「こんにちは!」など適当な文字
💡
UIが表示されない原因の9割は「Widgetを作っていない」ことです
Blueprintで表示処理を書いても、Widgetが存在しないと何も出ません。
② NPC用Blueprintを開く
次に Eキーを押したときの処理 を書きます。
③ 変数 TalkWidget を作る(重要)
二重表示を防ぐための変数を作ります。
作り方
- 該当のNPC を開く
- 左側「変数」→
+ - 名前:
TalkWidget - 型:
WBP_Talk(Object Reference) - Editable はオフでOK
💡
この変数に「今表示中のUI」を入れておきます。
④ Eキーの入力イベントを作る
手順
- Event Graph を右クリック
- 「E」と入力
- Keyboard → E を選択
⑤ UI表示処理の全体構成(超重要)
ここが 一番つまずきやすいポイントです。
処理の考え方はこれ👇
Eキーが押された
↓
TalkWidget が存在するか確認
↓
存在しなければ作って表示
⑥ Blueprintの正しい組み方(そのまま真似OK)
ノード構成(文章版)
Keyboard E
└→ Is Valid(Input Object:TalkWidget)
├ True →(何もしない)
└ False →
Create Widget(Class:WBP_Talk)
└ Return Value →
Set TalkWidget
Add to Viewport
ポイント解説
■ Is Valid の Input Object は?
👉 TalkWidget をそのまま接続
これは
「もうUIが表示されてる?」
を確認するためのノードです。
💡
Is Valid のピンが何も繋がっていなくてもエラーではありません
False のときだけ処理すればOKです。
⑦ 「TalkWidget は作らなくていい?」問題について
結論:
❌ 作らないとダメ
⭕ Create Widget で作る
Blueprint上でCreate Widget を実行した瞬間に
初めてUIが生成されます。
テスト再生で何も表示されなかった原因は
WidgetをCreateしていなかった可能性が高いです。
⑧ よくある間違い集(初心者あるある)
❌ TalkWidget を先に作っていない
→ Create Widget が必要
❌ Is Valid の Input Object が None
→ TalkWidget を繋ぐ
❌ Add to Viewport を忘れる
→ 作っただけでは表示されない
❌ 毎回 Create Widget している
→ 二重表示・無限生成の原因
⑨ 動作確認チェックリスト
✅ WBP_Talk が存在する
✅ TalkWidget 変数がある
✅ Eキーイベントがある
✅ Is Valid → False 側だけ処理
✅ Add to Viewport を使っている
これが全部揃えば 確実に表示されます。
🔰 Blueprintの線のつなぎ方(超重要)
Unreal Engine の Blueprint には 2種類の線があります。
▶ 白い線(実行ピン)
- 処理の流れ(上から下へ)
- 必ず繋がっていないと動かない
● 青い線(データピン)
- Widget や変数などの中身
- 情報を渡すだけ
🔰 今回の完成形(文章で再現)
以下の順番で 必ず線をつなぎます。
① Eキーイベント
Keyboard Eノードを置く- Pressed の白ピンから次へ
② Is Valid
Is Validノードを置く- Input Object に TalkWidget(青ピン)を接続
- Eキーの白ピン → Is Valid の白ピンへ
③ False 側だけ使う
- False の白ピンだけ使用
- True 側は何も繋がなくてOK
④ Create Widget
- False →
Create Widget - Class は WBP_Talk
⑤ TalkWidget に保存
- Create Widget の Return Value(青)
- →
Set TalkWidgetに接続
⑥ 画面に表示
- Set TalkWidget の白ピン →
Add to Viewport
🔰 なぜ Is Valid が必要?
Is Valid はこういう意味です👇
- TalkWidget が既に存在する?
- YES → 何もしない
- NO → 作って表示する
これを入れないと👇
❌ Eキーを押すたびにUIが増殖します。
まとめ
- UIは Widgetを作らないと表示されない
- 二重表示防止には Is Valid + 変数管理
- Eキー → UI表示は Blueprintだけで実装可能
- 初心者は「何が生成されて、何が参照なのか」を意識する









