ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
Unreal Engine 5(UE5)で、ゲーム内に「ロードボタン」を作る方法を解説します。プレイヤーがボタンをクリックすると、以前に保存したゲームデータ(位置、スコア、インベントリなど)が読み込まれ、続きから再開できる――そんな仕組みを UMG(ウィジェット)と SaveGame システムで実装します。セーブ機能とセットで使うことで、中断と再開のあるゲーム体験を提供できます。
仕組み・構造
ロード機能は、次の3つの要素で成り立っています。
- SaveGame クラス:保存したいデータ(座標・スコアなど)を変数として定義した、保存専用のブループリント。
- Load Game from Slot ノード:指定したスロット名から保存済みデータを読み込むノード。戻り値は SaveGame オブジェクト。
- ウィジェット(UMG):プレイヤーがクリックする「ロードボタン」を含むUI。
流れとしては、ボタンの On Clicked → Load Game from Slot でデータ取得 → 取得した SaveGame を Cast → 中の変数をゲームへ反映、という順になります。
使い方・手順
1. ウィジェットブループリントを作成する
- コンテンツブラウザで右クリックし「ユーザーインターフェース → ウィジェットブループリント」を選択。
- 名前を付けて(例:LoadGameWidget)保存し、ダブルクリックでUIエディタを開く。
2. ロードボタンを追加する
- 「パレット」から Button をドラッグしてキャンバスに配置。
- 詳細パネルで名前を LoadButton に変更。
- ボタンの中に Text を入れ、「ゲームをロード」と表示する。
3. On Clicked イベントを追加する
- LoadButton を選択し、詳細パネル下部のイベント欄から On Clicked の「+」を押す。
- グラフタブに切り替わり、On Clicked (LoadButton) ノードが生成される。
4. Load Game from Slot でデータを読み込む
- On Clicked から Does Save Game Exist を呼び、対象スロットの有無を確認(任意だが推奨)。
- 存在すれば Load Game from Slot を実行。Slot Name はセーブ時と同じ文字列、User Index は通常 0 を指定。
- 戻り値を、自作の SaveGame クラスへ Cast To で変換する。
5. 読み込んだデータをゲームに反映する
- Cast 後の SaveGame から、保存しておいた値(例:PlayerLocation)を取り出す。
- プレイヤーキャラを取得し Set Actor Location で位置を復元する。
- スコアやインベントリなど他の変数も同様に各システムへ反映する。
6. ウィジェットを画面に表示する
- レベルブループリントまたはプレイヤーキャラのブループリントで Create Widget を呼び、Class に LoadGameWidget を指定。
- 生成したウィジェットを Add to Viewport で画面に追加する。
- 必要に応じ Set Input Mode UI Only とマウスカーソル表示を設定する。
C++ で同等の処理を書く場合、SaveGame のロードは次のような型で受け取ります(テンプレート部分は二重エスケープ表記)。
USaveGame* Loaded = UGameplayStatics::LoadGameFromSlot(TEXT("SaveSlot1"), 0);
UMySaveGame* Data = Cast<UMySaveGame>(Loaded);
実用例・Tips
- ロード成功の通知:復元後に「ロードしました」のテキストを一瞬表示すると、操作のフィードバックになります。
- 複数スロット対応:スロット名を「Slot1」「Slot2」…と動的に変え、セーブデータ一覧UIを作れます。
- オートセーブとの併用:チェックポイント通過時に自動セーブし、メニューのロードボタンで任意復帰、という構成が定番です。
- ロード後のUI更新:HUDのスコア表示などは、ロード直後にバインドを更新して値を反映させます。
注意点・落とし穴
- スロット名の不一致:セーブ時とロード時で Slot Name が1文字でも違うと読み込めません。定数化して共有するのが安全です。
- Cast の失敗:保存に使った SaveGame クラスと別クラスへ Cast すると失敗し、以降の処理が止まります。Cast の Failed ピンも結線して握りつぶさないようにします。
- 存在チェック忘れ:セーブデータが無い状態で Load すると null が返り、Set Actor Location 等でエラーになります。必ず Does Save Game Exist で分岐します。
- ロードのタイミング:BeginPlay 直後にレベルの初期化が終わっていないと、位置復元が上書きされることがあります。1フレーム遅らせる等の対処が有効です。
関連リンク
- サードパーソンテンプレートにおけるキャラクター出現の定義 ― 復元した位置にキャラを出す前提知識
- アセット ― UIに使うウィジェットもアセットの一種
- オープンワールドテンプレートとは? ― セーブ対象となる広大マップの構造
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
コメントを削除してもよろしいでしょうか?