LoginSignup
3

More than 1 year has passed since last update.

[UE4] ラーニングコースのブロックベースのゲームにセーブ機能を追加する

Posted at

はじめに

UnrealEngineのラーニングコースのブロックベースのゲームの構築で作成したゲームに、セーブ機能を追加してみました。
セーブ機能はブループリント ランタイムの保存とロードの内容を参考に作成しました。

環境

Windows10
UnrealEngine 4.27.2

作り方

・UnrealEngineのラーニングコースのブロックベースのゲームの構築を一通り実施します。
・セーブする内容を定義する構造体S_SaveItemsを作成します。
構造体は、コンテンツブラウザ上で右クリック=>ブループリント=>構造体を選択して作成します。
変数は以下のようにClassとTransformを追加します。ClassにはBP BaseBlockクラスを型として、TransformはTransformを型として指定します。
image.png
・SaveGameオブジェクトのSG_SpawnedBlocksを作成します。
SaveGameオブジェクトは、コンテンツブラウザ上で右クリック=>ブループリントクラスを選択し、親クラスにSaveGameを指定して作成します。
変数は以下のようにSpawnedBlocksとSlotNameを追加します。SpawnedBlocksには先ほど作成した構造体S_SaveItemsの配列を型として、SlotNameにはStringを型として指定します。
image.png
・セーブ機能のインターフェースとしてBPI_SpawnBlocksを作成します。
インターフェースは、コンテンツブラウザ上で右クリック=>ブループリント=>ブループリントインターフェースを選択して作成します。
関数SpawnBlock, RemoveBlock, SaveBlocks, LoadBlocks, ClearBlocksを追加します。SpawnBlockとRemoveBlockは以下のようにインプットを指定します。
image.png
・ゲームモードGM_BlockGameを修正し、セーブ機能を追加します。
クラス設定から実装インターフェースにBPI_SpawnBlocksを追加します。
image.png
変数CreatedBlocksList, SaveBlocksListを追加します。
image.png
以下のようにイベントグラフにSpawnBlockの実装を追加します。
CreatedBlocksListにSpawnしたブロックを追加しています。
image.png
以下のようにイベントグラフにRemoveBlockの実装を追加します。
CreatedBlocksListからブロックを削除しています。
image.png
以下のようにイベントグラフにSaveBlocksの実装を追加します。
CreatedBlocksListに保存されたブロックをSaveGameオブジェクトを使用してセーブしています。
image.png
以下のようにイベントグラフにLoadBlocksの実装を追加します。
SaveGameオブジェクトからロードしたブロックをCreatedBlocksListに追加し、Spawnします。
image.png
LoadBlocksの前半拡大
image.png
LoadBlocksの後半拡大
image.png
以下のようにイベントグラフにClearBlocksの実装を追加します。
セーブされていた内容を削除しています。
image.png
以下のようにイベントグラフに起動時にLoadBlocksを実行する処理を追加します。
image.png

・BP_BlockPlayerを修正し、セーブ機能を使うように修正します。
BP_BlockPlayerのイベントグラフでブロックをSpawnしている箇所(インプットアクションPlaceBlockから始まる処理)に追加します(以下赤枠の箇所)。
image.png
追加箇所拡大
image.png
イベントグラフでブロックを削除している箇所(インプットアクションRemoveBlockから始まる処理)に追加します(以下赤枠の箇所)。
image.png
追加箇所拡大
image.png
イベントグラフにキー入力を追加します。
キー7を押したときにセーブを実行、キー8を押したときにセーブデータをクリアします。
image.png

参考資料

ゲームを保存して読み込む
SaveGameオブジェクトの公式ドキュメントです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3