Drone Model & Game Template (GameInstance & SaveData)

ここではUE マーケットプレイスにて販売している「Drone Model & Game Template」のコンフィギュレーターの変更内容をLevel間で共有および保存する方法を説明します。

コンフィギュレーターの変更内容をLevel間で共有

GameInstanceについて

コンフィギュレーターの変更内容をLevel間で共有するためには、GameInstanceを使用します。GameInstanceの作成方法と組み込み方について説明します。

GameInstanceブループリント作成

GameInstanceのブループリントは、GameInstanceクラスを親に指定します。作成したGameInstanceブループリントの名前は、”DroneGameInstance” としました。

GameInstanceクラスを親に指定

プロジェクト設定で作成したGameInstanceブループリントを指定

“Project Settings” -> “Maps & Modes” -> “Game Instance Class” を 作成したGameInstanceブループリントに変更する。

Game Instance Class を DroneGameInstanceに変更

GameInstanceに保存するための変数と関数を追加

DroneGameInstanceに、「TypeNo」と「ColorNo] の変数と「saveData」関数を追加します。

GameInstanceの取得

「CM_MaterialComponent」のBeginPlayイベントに、GameInstanceを取得するロジックを追加します。取得したGameInstanceをDroneGameInstanceにCastし、変数に格納します。

コンフィギュレータの変更をGameInstanceに保存

「CM_MaterialComponent」の「ChangeMaterial」で、「DroneInstanceGame」の「SaveData」関数を呼び出し、変更を保存します。

Level間の遷移を確認

コンフィギュレーターに、”Go to race map” ボタンを追加し、レースマップに遷移するよう変更し、変更内容が引き継がれているか確認します。

コンフィギュレータ画面
TypeとColorを変更
レースマップへ遷移

変更内容を保存

SaveGameについて

GameInstanceは、Gameが終わると変更内容が破棄されてしまいます。そのため、Gameが終わったあともコンフィギュレータの変更内容を保持する場合、物理的に保存する必要があります。SaveGame機能を使用します。

SaveGameブループリント作成

SaveGameのブループリントは、SaveGameクラスを親に指定します。作成したSaveGameブループリントの名前は、”DronSaveGame” としました。

SaveGameクラスを親に指定

SaveGameに保存するための変数と関数を追加

DroneSaveGameに、「TypeNo」と「ColorNo] の変数を追加します。

Loadロジック追加

「DroneGameInstance」に「Init」イベントを追加し、SaveしたデータをLoadするためのロジックを追加します。Saveデータがない場合は、CreateSaveGameObject で新規作成します。存在した場合は、DroneSaveGameへキャストを行い、「TypeNo」と「ColorNo」をSaveGameから取得し、DronGameInstanceの初期値として設定します。作成もしくは取得したDroneSaveGameは変数に保存します。

Saveロジック追加

「DroneGameInstance」の「SaveData」イベントに、Saveロジックを追加します。「AsDroneSaveGame」に、「TypeNo」と「ColorNo」の値をセット後、Save Game to Slot を使用しSaveを行います。SlotName変数は任意の文字列をセットしてください。

SaveGameの確認

コンフィギュレータで色を変更後にゲームを終了し、再起動させた際に変更した値が引き継がれているか確認します。

コンフィギュレータ画面
TypeとColorを変更
Game終了後、再起動

タイトルとURLをコピーしました