【UE5初心者向け】Eキーで会話UIを表示する方法(完全手順)

Unreal Engine 5 で
「NPCに近づいて Eキーを押すと会話UIが表示される」
という仕組みを作ったので、今日やったことを手順としてまとめます。

Blueprint初心者でも そのまま真似すれば動く ことを重視しています。


完成イメージ

  • NPCに近づく
  • Eキーを押す
  • 画面に会話UI(Widget)が表示される
  • 二重に表示されない
https://cdn1.epicgames.com/ue/product/Screenshot/WidgetStudioGraphic-1920x1080-00b2d4f6aebb7ce0ade666dc690b8b2d.png?resize=1&w=1920
https://d3kjluh73b9h9o.cloudfront.net/original/4X/3/9/6/396fa7c49ed99a5feb42f654c18a18a01ff0ab4f.png
https://d3kjluh73b9h9o.cloudfront.net/original/3X/e/7/e7951c7d2b75685fc73e05105dfd1992aa995fd8.png

4


① 会話用Widgetを作る(WBP_Talk)

まず 表示するUIそのもの を作ります。

手順

  1. コンテンツドロワーで右クリック
  2. User Interface → Widget Blueprint
  3. 名前を WBP_Talk にする
  4. ダブルクリックして開く

中身

  • Canvas Panel(初期状態でOK)
  • Text(または Text Box)を1つ置く
    • 例:「こんにちは!」など適当な文字

💡

UIが表示されない原因の9割は「Widgetを作っていない」ことです
Blueprintで表示処理を書いても、Widgetが存在しないと何も出ません。


② NPC用Blueprintを開く

次に Eキーを押したときの処理 を書きます。


③ 変数 TalkWidget を作る(重要)

二重表示を防ぐための変数を作ります。

作り方

  1. 該当のNPC を開く
  2. 左側「変数」→ +
  3. 名前:TalkWidget
  4. 型:WBP_Talk(Object Reference)
  5. Editable はオフでOK

💡

この変数に「今表示中のUI」を入れておきます。


④ Eキーの入力イベントを作る

手順

  1. Event Graph を右クリック
  2. 「E」と入力
  3. 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だけで実装可能
  • 初心者は「何が生成されて、何が参照なのか」を意識する

おすすめの記事