2DRPGの作り方26 セーブデータをロードしてロールプレイングゲーム進行状況を復元

Unity C# 2DRPGゲームの作り方 ~ドラクエ風レトロRPGを作ろう!~


Unity入門の森オリジナル本格ゲーム制作講座はこちら
5種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

前回の記事ではセーブ機能を追加しました。

前回の記事:

2DRPGの作り方25 PlayerPrefsとjsonを用いてセーブ機能を実装する
前回の記事でゲームオーバーとゲームクリア処理を作成しました。 前回の記事: 今回の記事ではUnityのPlayerPrefsとjsonデータ構造を用いてセーブシステムを作成していきます。 また、宝箱とボスの配置状況も記録し、前回の...

今回の記事ではセーブしたデータをロードできるようにしていきます。

また、宝箱を取得した後にゲームオーバーになってしまった場合、一度取得した宝箱を何度でも取得できる不具合もここで調整していきます。


【Line登録者限定のプレゼントもあるよ!】

ロード機能を追加する

それではまず「SaveData」コンポーネントにロード機能を追加していきます。

次のように「SaveData」コンポーネントを修正してください。

セーブデータの読み込み機能を「SaveData」コンポーネントに追加したので、次は「Map」および「CharacterBase」コンポーネントにセーブデータの読み込み機能を追加していきます。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.stores.jp/)で講座閲覧権を取得してね。

一時的なセーブ機能について

ここまででセーブ機能は大体できました。

ただし、現状のままだとセーブしていない拾ったアイテムなどの状態が記録されない状態になっています。

戦闘に負けた時にマップが切り替わるとアイテムが復活して、何回でもアイテムが取れるようになるなどの問題が出てしまいます・・・

この問題を修正するには次の箇所でマップの状態を一時的に記録するようにします。

  • 戦闘開始時
  • マップ切り替え時

基本的にセーブに影響する行動を行った時に記録するようにすればOKです。実際にここで対策を行いましょう。

それではまず「BattleWindow」コンポーネントを次のように修正してください。

次に「MoveMapEvent」クラスを次のように修正してください。

イベントを発生するたびに移動する前のマップの状態を一時的に記録するようにしています。

最後にマップ読み込みの時に一時的に保存しているデータがないか確認し、あればそれを読み込むようにします。

まとめ

今回の内容をまとめると以下のようになります。

  • セーブの読み込み機能を追加
  • 「CharacterBase」コンポーネントおよびその派生クラスをセーブの読み込み機能に対応
  • マップの一時的なセーブ機能を実装

それでは次の記事に行ってみましょう!

2DRPGの作り方27 タイトル画面の作成とシーン間遷移処理を作成してRPG完成!
前回まででセーブ&ロード処理を作りました。 前回の記事: 今回の記事ではついに2DRPG最後の仕上げとしてタイトル画面を実装していきます。 タイトル画面表示スクリプトの作成 それではまずスクリプトの方を作成していきます。 「T...

UnityとC#で作る2DRPGゲームの作り方講座に戻る>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
5種類の本格ゲームの全ソースコード公開・画像&動画による解説付き


【Line登録者限定のプレゼントもあるよ!】

コメント

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