セーブ&ロードやセッティングが上手くできたので、タイトル画面のメニューと連動させました。
Unreal Engineのバージョンは5.3.0 Preview 1です。
やっと納得のいく仕様の基本メニューとセーブ&ロードができた。
これさえあればミニゲームのチュートリアルもゲームとして完成させられそう。#UE5 #アンリアルエンジン pic.twitter.com/erXGeZIWOo— ハマーキーUE (@Hummerkey_UE) August 22, 2023
W_TitleMenu(ウィジェットブループリント)
作成:ウィジェットブループリント
親クラス:User Widget
名前:W_TitleMenu
デザイナー
Canvas Panelを配置。
Canvas Panelの子としてBorderを配置。
・名前をBackgroundにしました。
・アンカーを全画面にします。
・オフセットは全て0にします。
画面全体に広げてタイトル画面の背景にします。
Brush > Imageで画像も使えます。
今回は真っ黒。
Canvas Panelの子としてVertical Boxを配置。
その子としてImageを配置し、名前をTitle Logoにします。
これらはタイトルロゴを表示するためのものです。位置とサイズもそれ用に合わせる。
Imageを追加で配置して重ねることも可能です。
今回は真っ黒。
Canvas Panelの子としてVertical Boxを配置。
下層のVertical Boxの子としてButtonを4個配置。
・名前を上から「Button_NewGame」「Button_Load」「Button_Settings」「Button_QuitGame」にしました。
・Horizontal Alignmentを右。
・Vertical Alignmentを左から2番目。
・Style > Normal > Tint > Aを0.0。
・Style > Hovered > Tint > Aを0.0。
・Style > Pressed > Tint > Aを0.0。
ボタン自体は透明化してテキストのみ表示させるためです。
Buttonの子としてTextを配置。
・名前を上から「Text_NewGame」「Text_Load」「Text_Settings」「Text_QuitGame」にしました。
・Is Vatiableにチェックを入れます。
・コンテンツ > Textを上から「ニューゲーム」「ロード」「セッティング」「ゲーム終了」にします。
Vertical Boxの位置とサイズはタイトルメニューに適したサイズにします。
マウスHoverとキーボードFocusの同期
キーボードFocusに合わせてテキストカラー変更

イベント TickでButtonがFocusされているかを全チェックして、Focus中のButtonに対応したテキストのカラーとフォントサイズを変更。
FucusedTextColorという変数でButtonがFocusされている時にテキストの色を赤にして、FocusedTextFontという変数でサイズを28にしています。
それぞれRemoveという変数を使い、一番最初にテキストのカラーとサイズをリセットしています。
ボタンクリックの処理
ロード画面とセッティング画面を閉じる処理
TitleMenu(レベル)
ファイル > 新規レベル > 空のレベルを作成。
Mapsというフォルダを作成し、TitleMenuとして保存します。
上メニューの階層アイコンをクリックし、レベルブループリントを開くを選択。

Set User Focusが利かなくて悩みましたが、Set Input Mode Game And UIのIn Widget to FocusにButtonを設定するだけで良かったんだと知りました。
今回はButtonは透明のままでテキストに色をつけますから、ウィジェットを開いたタイミングでText StartにSet Color and Opacityで色をつけています。
BP_GameModeTitle(ゲームモード)
親クラス:Game Mode Base
名前:BP_GameModeTitle
W_MainMenu(ウィジェットブループリント)
ゲームプレイからタイトル画面に戻る設定をします。
まずW_MainMenuの表示テキストである「SAVE」「LOAD」「SETTINGS」「QUIT」を「セーブ」「ロード」「セッティング」「タイトルに戻る」に変更しました。

タイトル画面に戻るだけならOpen Level (by Name)だけで良いのですが、Slot Nameをリセットしておかないと、タイトル画面でニューゲームをクリックした時に、既存のセーブデータをロードしてしまいます。
ニューゲームをクリックした時にSlot Nameをリセットする仕様にしても良いです。
BP_Player(プレイヤーブループリント)
Bボタンでメインメニューを閉じる
タイトルメニューのロードとセッティングはBボタンやマウス右クリックで閉じることができますが、ゲームプレイ中のメインメニューはBボタンやマウス右クリックで閉じられなかったので修正しました。
コンテンツ > ThirdPerson > Input > ActionsにInput Actionがあります。IA_Jumpを複製してIA_MainMenuCloseにしました。
Pause中に使いますから、Trigger when Pausedにチェックを入れる必要があります。
TriggersはPressedのみで構いません。
コンテンツ > ThirdPerson > InputにあるIMC_DefaultにIA_MainMenuCloseを追加します。
Bボタン、右クリック、Q、Escでメニューを閉じられます。ちなみにEscはUnreal Engineのテストプレイ自体を閉じてしまいます。
メニューを開くボタンである特別仕様の右とTabもFlip FlopのB(偶数回)として利きますから当然ながら閉じられます。

Bボタンらでメインメニューが開くと困りますから、Flip FlopのIs AがTrueであるかどうか、つまりA側のノードが完了しているかどうかをブランチで判断しています。
これらはFlip Flopの前に繋いでおかないと、Flip Flopが完了しないままメニューを閉じてしまいますので、次にMainMenuを開く時にボタンを2回押さないと開きません。
TitleMenu(レベル)
TitleMenuのレベルブループリントもEnhanced Inputに対応させました。
コメント