ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
Unreal Engine 5(UE5)でEscキー押下からイベント(メニューの開閉など)を発火させるには、Escキーを「入力アクション」として登録し、そのアクションが発生したときに実行したい処理(ウィジェットの表示や閉じる、ポーズ切り替えなど)をBlueprintでつなぐのが基本です。UE5には新しい「Enhanced Input(強化入力)」と、従来からある「Action Mapping(アクションマッピング)」の2つの入力の仕組みがあり、新規プロジェクトではEnhanced Inputが標準として推奨されています。この記事では、入力の設定からEscキーのイベント受け取り、ポーズメニュー開閉の具体例、そしてEsc特有の落とし穴までを順に解説します。
この記事の要点
- Escキーでイベントを起こす流れは「①入力を設定 → ②Escのイベントを受け取る → ③処理をつなぐ」の3ステップ。
- UE5の標準はEnhanced Input。Input Action(入力アクション)とInput Mapping Context(入力マッピングコンテキスト)にEscキーを割り当てる方式が推奨されている。
- 従来のAction Mapping(Project Settings → Engine → Input)でも設定可能。既存プロジェクトの保守などで使われる。
- キーイベントを直接置く方法(KeyboardイベントのEscape)もあるが、Escの扱いには注意が必要。
- Escはエディタ上のプレイ(PIE)で「プレイ停止」に割り当てられているため、エディタ内テストではEscでPIEが終了してしまうことがある。挙動の確認はスタンドアロン実行などで行うのが安全。
- 入力モード(Input Mode)の設定によっては、Escがウィジェット側に届かないことがある。受け取り場所(Player ControllerかWidgetか)を意識する。
1Escキーでイベントを発火させる全体の流れ
キー入力で何かを起こす処理は、どの方法を選んでも次の3つのステップに整理できます。
- 入力を設定する:Escキーを「アクション」として登録し、ゲームがその押下を認識できるようにします。
- Escキーのイベントを受け取る:登録したアクションがBlueprint上で「イベントノード」として現れるので、それを起点にします。
- 処理をつなぐ:イベントの先に、実行したい処理(メニューを開く、閉じる、ポーズするなど)をノードで接続します。
以下では「入力を設定する」部分を、推奨されるEnhanced Inputと従来のAction Mappingの2通りで説明し、その後にイベントの受け取りと具体例へ進みます。
2手段①:Enhanced Input(推奨)でEscキーにアクションを割り当てる
Enhanced Inputは、UE5で標準として用意されている入力システムです。入力を「データアセット」として扱うため、後からキーの差し替えや、状況に応じた入力の切り替え(例:通常時とポーズ時で入力を変える)がしやすいのが特長です。新規プロジェクトでは、まずこの方式を検討することが推奨されます。
大まかな手順は次の通りです。
- Input Action(入力アクション)を作成:コンテンツブラウザで右クリックし、Input → Input Action を作成します(例:
IA_Pause)。Escでオン/オフを切り替えるような単純な操作であれば、値の型(Value Type)はDigital (bool)を選びます。 - Input Mapping Context(入力マッピングコンテキスト)を作成:同じくInput → Input Mapping Context を作成します(例:
IMC_Default)。これは「どのキーがどのアクションに対応するか」をまとめたアセットです。 - キーを割り当てる:作成したマッピングコンテキストを開き、Mappingsに先ほどの
IA_Pauseを追加して、キーに「Escape」を割り当てます。 - マッピングコンテキストを有効化する:プレイ開始時などに、マッピングコンテキストをプレイヤーへ適用する必要があります。Player ControllerやPawn等のBegin Playで、
Get Enhanced Input Local Player Subsystemを取得し、Add Mapping ContextノードでIMC_Defaultを追加します。これを行わないと、キーを設定してもアクションが反応しません。 - イベントを受け取る:適用後は、Blueprintのイベントグラフで右クリックし、
EnhancedInputAction IA_Pauseというイベントノードを置けます。このノードの実行ピン(TriggeredやStartedなど)から、行いたい処理へつなぎます。
マッピングコンテキストを途中で入れ替えられる点はメニュー実装と相性が良く、「通常プレイ用の入力」と「メニュー操作用の入力」を切り替える設計にも応用できます。具体的なノード名やオプションはバージョンによって細部が異なる場合があるため、利用中のUE5バージョンの公式ドキュメントもあわせて確認することをおすすめします。
3手段②:従来のAction Mapping(Project Settings)でEscキーを設定する
UE5には、従来からのAction Mappingも引き続き用意されています。既存プロジェクトの保守や、シンプルな構成で手早く試したい場合に使われることがあります。手順は次の通りです。
- メニューから Edit → Project Settings を開きます。
- 左の一覧から Engine → Input を選びます。
- Bindings の Action Mappings に新しいアクションを追加します。名前を付け(例:
Pause)、キーに「Escape」を割り当てます。 - Blueprintのイベントグラフで右クリックし、設定した名前のアクションイベント(例:
InputAction Pause)を配置します。このイベントの「Pressed(押した瞬間)」などの出力から、処理をつなぎます。
Action Mappingは設定が比較的シンプルですが、実行時のキー差し替えや状況による入力切り替えといった柔軟性ではEnhanced Inputに分があります。新規に作るなら手段①を、すでにAction Mappingで組まれているプロジェクトを触るなら手段②を、というように使い分けるとよいでしょう。
4手段③:キーイベントを直接置く方法と、その注意点
アクションを登録せず、Blueprint上に「Escape」のキーイベントを直接置く方法もあります。イベントグラフで右クリックし、検索欄に「Escape」と入力すると、Keyboardイベントの Escape ノードが見つかります。手軽ですが、いくつか注意点があります。
- この方法は、その入力を受け取れる対象(Player ControllerやPawn、入力が有効なActorなど)に置く必要があります。置き場所によっては反応しません。
- キーをハードコードする形になるため、後からキー設定を変えたい場合の柔軟性は低くなります。再設定のしやすさを重視するなら、手段①または②のアクション方式が適しています。
- Escは後述のとおりエディタや入力モードの影響を受けやすいキーです。直接置く場合でも、受け取り場所と入力モードの確認が重要になります。
5Esc入力をどこで受け取るか:Player ControllerとWidget
Escのイベントを「どこで受け取るか」は、メニュー実装で意外と重要なポイントです。代表的な受け取り場所は次の2つです。
- Player Controller(または Pawn)で受け取る:ゲーム全体の入力として扱いたい場合に向きます。「Escでポーズメニューを開く」といったゲーム側の状態変化は、ここで受け取るのが自然です。
- Widget(UMGの画面)で受け取る:すでにメニューやUIが開いていて「Escでそのメニューを閉じる」といった場合は、ウィジェット側でキーを受け取る実装が有効なことがあります。とくに入力モードをUI向けに切り替えている状況では、Player Controller側にEscが届かず、ウィジェット側で受け取る必要が出てくる場合があります。
UIを表示する際は、入力の流れ先を制御する Set Input Mode 系のノード(Game Only / UI Only / Game And UI)を使うことがあります。これらの設定により、キー入力がゲーム側へ流れるか、UI側へ流れるかが変わります。Escが思った場所に届かないときは、この入力モードの状態をまず確認してください。
6具体例:Escでポーズメニューを開閉する
ここでは、Escキーで「メニューが閉じていれば開く」「開いていれば閉じる」というトグル(切り替え)動作を作る考え方を示します。下記はノードのつながりを文章で表したもので、実際にはこれらをBlueprintのワイヤーで接続します。
// Player Controller などでEscのアクションイベントからメニューをトグルするBlueprintの流れ(概念図) EnhancedInputAction IA_Pause (Triggered) → Branch(条件: 「メニューを開いているか」を表す bool 変数 bMenuOpen) False(閉じている)→ Create Widget(PauseMenu)→ Add to Viewport → Set Input Mode UI Only → bMenuOpen = true True(開いている) → Remove from Parent(メニューWidget)→ Set Input Mode Game Only → bMenuOpen = false |
ポイントは、「いま開いているかどうか」を覚えておくための変数(上記の bMenuOpen)を用意し、その状態に応じて開く処理と閉じる処理を分岐(Branch)させることです。実際のプロジェクトでは、ポーズしたい場合に Set Game Paused を併用したり、メニューを閉じるときにマウスカーソルの表示・非表示を切り替えたりと、必要に応じて処理を足していきます。
なお、ポーズ中(ゲームが一時停止している状態)でも入力を受け取りたい場合は、入力やイベントが「一時停止中でも動作する」設定になっているかを確認する必要があります。Enhanced Inputとポーズの組み合わせは状況によって挙動が異なることがあるため、ポーズ機能を絡める場合は実機で動作確認を行ってください。
7落とし穴:Escキー特有の注意点
| つまずきやすいポイント |
|---|
|
8よくある質問(FAQ)
Q. Escを押してもイベントが発生しません。何を確認すればよいですか?
まず、エディタ内プレイ(PIE)でテストしていないか確認してください。PIEではEscがプレイ停止に割り当てられているため、スタンドアロン実行で再確認します。次に、Enhanced Inputならマッピングコンテキストを Add Mapping Context で適用しているか、Action Mappingなら名前とキー割り当てが正しいか、そして入力モード(Set Input Mode)の設定でEscが意図した場所に届いているかを順に確認します。
Q. Enhanced InputとAction Mapping、どちらを使うべきですか?
新規に作るならEnhanced Inputが推奨されます。実行時のキー再設定や、状況に応じた入力切り替え(通常時とメニュー時など)がしやすいためです。一方、すでにAction Mappingで組まれている既存プロジェクトを触る場合は、その方式に合わせる方が混乱が少なく済みます。
Q. メニューが開いている間だけEscで閉じたいです。どう実装しますか?
「メニューが開いているか」を表すbool変数を用意し、Escのイベントで分岐させるのが基本です。メニュー表示中はウィジェット側でEscを受け取る実装にすると、UI Onlyの入力モード下でも閉じる操作を拾いやすくなります。開く・閉じるそれぞれで入力モードやカーソル表示を適切に切り替えると、操作感が安定します。
9まとめ
UE5でEscキーからイベントを発火させるには、「①入力の設定 → ②Escのイベント受け取り → ③処理の接続」という流れを押さえるのが近道です。設定方法は、推奨されるEnhanced Input(Input ActionとInput Mapping Contextにキーを割り当て、マッピングコンテキストを適用)と、従来のAction Mapping(Project Settings → Engine → Input)の2通りがあり、加えてキーイベントを直接置く方法もあります。Escはエディタ上のプレイで停止に使われたり、入力モードによって届く場所が変わったりと特有の注意点があるため、動作確認はスタンドアロン実行で行い、受け取り場所(Player ControllerかWidgetか)を意識して実装すると、ポーズメニューの開閉のようなインタラクションを安定して実現できます。細かなノード名やオプションは使用中のバージョンで異なる場合があるため、不確実な点は公式ドキュメントでの確認をおすすめします。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ブループリントで途中から親クラスを指定する方法
- C++で編集となっているコンポーネントをブループリントで編集する方法
- Boolean変数の初期値を変更する方法
- ブループリントで特定のキーが押された時にイベントを発火させる方法
- ブループリントで配列からインデックスを指定して取得する方法
- Blueprintで「Esc」キーを使ってイベントを発生させる方法
- Blueprintで「Cast To」を使い、複数のクラスに対応する方法
- Blueprintで指定した確率で処理を分岐させる方法
- FrameGrabberをBlueprintで使用する方法
- ブループリントで現在日時を取得する方法
- Enhanced Input とは?Input Action と Input Mapping Context の基本
- Enhanced Input でキー入力を受け取る手順
- 旧 Input Mappings から Enhanced Input へ移行する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Spring Framework 記事一覧31件|DI・設定・例外の対処 2026-09-07 07:45:13
- Laravel 記事一覧55件|環境構築・ルーティング・DB・エラー対処 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Javaの定数 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- hostnameコマンドの使い方|Windows・Linux・macOSでホスト名確認 2026-09-07 07:45:13
- NetBeansでTomcatを起動する手順|サーバ登録・ポート・トラブル対処 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Oracle DROP USERでユーザー削除|CASCADE・接続中ユーザーの対処 2026-09-07 07:45:13
- SQLとは|DDL・DMLとリレーショナルデータベース操作の基本 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?