セーブとロードの処理について解説しました。
人によっては見慣れないBPも多く使われていると思いますが、図と動画を使って丁寧に分かりやすく解説しています。
この記事だけで理解できます。
概要
はじめてセーブの処理を作る人にとっては見慣れないBPを複数使用していると思います。そこで図と動画を用いて丁寧に概要を説明します。
![](https://japanese-rooster.com/wp-content/uploads/2022/03/SaveLoad2-1-1200x675.png)
下準備
概要で説明したことを、実際につくりながら説明していきます。
Structureの作成
コンテンツブラウザ内で右クリック。Blueprints>Structureの順に選択して名前をつけます。
今回は名前を[PlayerData]として、4つの変数を設定しました。(Location,EXP,Money,HP)
その後デフォルトの値を入力します。Locationの値は、キャラクターの場所を調べて記入すると良いでしょう。
![](https://japanese-rooster.com/wp-content/uploads/2022/02/bandicam-2022-02-27-23-08-21-768.jpg)
Save Gameの作成
コンテンツブラウザ内で右クリック。Blueprint Class>All Classesの順に選び、下の検索ボックスを使って[Save Game]を選択。
今回は[Save Game Object]と名前をつけました。
![](https://japanese-rooster.com/wp-content/uploads/2022/02/bandicam-2022-02-27-23-10-46-024.jpg)
Game Instance
GameInstanceは、ゲームを始めてから終わるまで、ずっと一緒にいてくれるものです。
レベルやゲームモードを変えても一緒にいてくれるので、ここに処理を作るのが良いと思います。
作成と設定
コンテンツブラウザ内で右クリック。Blueprint Class>All Classesの順に選び、下の検索ボックスで検索し[Game Instance]を選択。名前は[My GameInstance]としました。
その後、忘れずにプロジェクトセッティングで設定してください。
![](https://japanese-rooster.com/wp-content/uploads/2022/03/image.png)
ゲーム開始時の処理
GameInstance内にSaveGameを作成する処理を書きます。はじめに、セーブされたデータの有無をチェックしています。データがなかった場合のみ、セーブゲームを作ります。
![](https://japanese-rooster.com/wp-content/uploads/2022/02/bandicam-2022-02-27-23-04-24-708-1200x215.jpg)
セーブの関数
プレイヤーデータをセーブする関数を作りました。セーブゲームにデータをセットした後に、セーブをします。入力したスロット名のついたファイルを作ります。
![](https://japanese-rooster.com/wp-content/uploads/2022/02/bandicam-2022-02-27-23-04-41-750.jpg)
ロードの関数
セーブされたプレイヤーデータをロードする関数を作りました。ファイルとして保存されているデータを用いて、セーブゲームのデータを復元します。その後、そこに含まれているプレイヤーデータを取り出してアウトプットします。
![](https://japanese-rooster.com/wp-content/uploads/2022/02/bandicam-2022-02-27-23-05-17-200-1200x118.jpg)
セーブとロード
Third Person Character のBPに処理を追記していきます。Loadの部分だけ少し複雑に見えますが、Event Begin PlayにCast以降の処理を同じように作ってもらえたら大丈夫です。
僕はこのキャラクターのBPを、プレイヤーとしても敵としても流用しているので、処理が初期状態より少しだけ複雑になっています。
同じようなものを作りたい方は、以前の記事に作り方を全てまとめてあるのでご覧ください。
![](https://japanese-rooster.com/wp-content/uploads/2022/03/bandicam-2022-03-01-23-33-04-115.jpg)
![](https://japanese-rooster.com/wp-content/uploads/2022/03/bandicam-2022-03-01-23-32-30-396-1200x213.jpg)
![](https://japanese-rooster.com/wp-content/uploads/2022/02/bandicam-2022-02-27-23-02-55-688.jpg)
Structureへの置き換え
今まで作ってきた処理を構造体(Structure)に置き換えました。少し煩雑になったので、関数を新しく作り整理しました。
これまで作ってきた処理については、以前の記事で説明してあるので、よろしければご覧ください。
関数の作成
Structure(構造体)を使うことで処理が煩雑になってしまいました。そこで関数を使うことで少しスッキリさせました。
![](https://japanese-rooster.com/wp-content/uploads/2022/03/bandicam-2022-03-01-23-52-36-083.jpg)
置き換え
今まで作ってきた処理を、作った関数をつかって書き換えています。
👇ダメージを受ける処理
![](https://japanese-rooster.com/wp-content/uploads/2022/03/bandicam-2022-03-01-23-41-52-935-1200x275.jpg)
👇死ぬ処理(報酬を渡すところを少しだけ変更)
![](https://japanese-rooster.com/wp-content/uploads/2022/03/bandicam-2022-03-01-23-43-12-151-1200x388.jpg)
👇敵を倒した後、報酬を受け取る処理(処理が短くなったので、デバッグとくっつけました)
![](https://japanese-rooster.com/wp-content/uploads/2022/03/bandicam-2022-03-01-23-43-35-067-1200x438.jpg)
👇歩く速さを変えるデバック用の処理
![](https://japanese-rooster.com/wp-content/uploads/2022/03/bandicam-2022-03-01-23-43-56-730.jpg)
![](https://japanese-rooster.com/wp-content/uploads/2022/01/Run.gif)
Twitterしてます
ブログの更新をお知らせ
コメント