UE4でゲームデータのセーブ/ロード
多くのゲームではデータのセーブ/ロードを実装します。
今回はUE4でローカルファイルへのセーブ/ロードを試してみました。
UE4のバージョンは4.8.2です。
プロジェクト作成
ThirdPersonテンプレートを使用してプロジェクト作成。
キー登録
「編集」→「プロジェクト設定」→「インプット」→「Action Mappings」にキー登録。
- Load Game
- 0キー
- Save Game
- Shift + 0キー
セーブデータクラスを作成
SaveGameを継承してセーブ用のBlueprintを作成します。
保存する内容をセーブデータクラスに記述
今回はプレイヤーの位置情報を保存するので、Transform型で「PlayerTransform」という変数を定義します。
ロード用の関数定義
レベルのブループリントを開き、LoadGameDataという関数を実装します。
GameDataというのはセーブデータクラスをメンバとして宣言したものです。
ロード時はまずGameDataがNullかどうかチェックし、もしNullであれば新規で作成しています。
その後、「Load Game from Slot」でファイル保存されているセーブデータをロードし、プレイヤーの位置情報を上書いています。
セーブデータにはスロット名とユーザーインデックスが指定できます。
スロット名はセーブデータの名前、ユーザーインデックスはその中でのIDみたいなものですね。
ドラクエの冒険の書1とか冒険の書2とかそんなイメージです。
セーブ用の関数定義
レベルのブループリントを開き、SaveGameDataという関数を実装します。
セーブ関数が呼ばれたら、プレイヤーの位置情報を取得してGameDataのPlayerTransformを更新し、「Save Game to Slot」でファイル保存しています。
呼び出し処理
レベルのブループリントのイベントグラフを開き、セーブ/ロード用の関数呼び出しを実装します。
こんな感じになりました
UE4でゲームデータをセーブ/ロード。位置をセーブしていて、ロードしたらセーブした位置に戻る。 pic.twitter.com/r9lCpyQRza
— ほげたつ (@HogeTatu) 2015, 7月 25