Unityに関連する記事です

 ユーザーのプレイデータをセーブできるようになりましたので、ロードして、ゲーム内に反映する機能を追加します。
 
 セーブ・ロード機能を実装できれば、ゲームを開始した際に、以前までユーザーが獲得していた褒賞の情報を引きついだ状態で再開出来るようになります。


<実装画像 セーブしてある褒賞データとポイントの情報>



<実装動画 獲得した褒賞のデータとポイントをそれぞれロードしてゲームを再開>
動画ファイルへのリンク


手順23 −ユーザーのプレイデータをロードしてゲーム内に反映する機能の実装−
40.GameData スクリプトを修正する
41.GameManager スクリプトを修正し、獲得した褒賞のデータを PlayerPrefsHelper クラスを利用してロードし、ゲーム内に反映する処理を実装する



 新しい学習内容は、以下の通りです。

 ・TODO を参考にしながら自分で処理のロジックを考えてスクリプトを書いてみる



40.GameData スクリプトを修正する

1.設計


 褒賞のデータとポイントをセーブすることが出来ましたので、最後にこのデータをロードして、ゲーム内に反映させていく処理を実装します。

 セーブの処理は、対象となるデータを選択してセーブ、という流れで機能しますが、ロードの処理は、対象となるデータがあるかどうかを確認してロードを行い、
その後、その情報をゲーム終了時の状態に復元する、という流れでないと正常に機能しません。そのためロード処理の方が複雑になります。

 最初にロードするデータの内容と、そのデータをゲーム内のどの部分に反映して復元を行っていくのかを設計して確認しておきます。
その上で、ロードする処理と、そのロードしたデータとを復元する部分をつなげていくようにイメージしてください。

 前回の手順ではロード用に GameManager クラスの Start メソッドにたくさんの TODO を用意しています。これも参考にしてみてください。


2.GameData スクリプトを修正する


 ロードの処理にも、PlayerPrefsHelper クラスのメソッドを利用します。
EarnedReward クラスの情報は OfflineTimeManager クラスでお使いの情報のクラス(JobTimeData)をロードしたときと同じように
Json 形式で読み込んでから、元のクラスに変換して利用します。ポイントについてはセーブも int型なので、そのまま int 型の情報としてロードすれば利用できます。

 ロード用のメソッド以外にも情報を取得・参照するためのメソッドを準備して、外部のクラスから利用できる情報を提供できる状態にします。


GameData.cs

 <= クリックすると開きます


 スクリプトを修正したらセーブします。


41.GameManager スクリプトを修正し、獲得した褒賞のデータを PlayerPrefsHelper クラスを利用してロードし、ゲーム内に反映する処理を実装する

1.設計


 今回も TODO 部分を実装して処理を組み立てていきます。先ほど GameData クラスに用意したそれぞれのメソッドを実行する処理を実装していくことになります。
まずは自分で、どの部分に、どの処理を書けば制御が成功するのか、考えて実装してみてください。

 ヒントとしては、新しく GameData クラスに用意したメソッドは4つです。これを上から順番に1つずつ利用していきます。
そして、TODO の数も4つです。どのように組みたてていけばロード処理として制御できるのか、イメージしてください。


2.GameManager スクリプトを修正する


 Start メソッドに残っている TODO に処理を実装していきます。
GameData クラスはシングルトンクラスですので、変数を用意して代入しなくても、直接メソッドへの命令が可能です。

 自分で処理を考えて書き込むということは難しく複雑です。そのために TODO を利用して、日本語で作りたい処理の目安を作ることでイメージしやすくしています。
これは教材だから TODO を用意している訳ではなく、処理を実際に組み立てていく際に利用する手法の1つです。

 GameData クラスに新しく用意したメソッドをどのような順番や分岐制御を行えば、ロードをして、以前のゲームの状態として復元して再開できるのか、そのロジックを考えて書いてみてください。
それから教材を確認してみてください。


GameManager.cs

 <= クリックすると開きます


 スクリプトを修正したらセーブします。


3.ゲームを実行して動作を確認する


 ゲームを実行して褒賞を獲得して GameData クラスの List に登録します。
その状態でゲームを終了して、再度、ゲームを開始します。

 ゲーム終了時の褒賞のデータ(獲得している褒賞と数)、ポイントがロードされてゲーム内に反映されていれば制御成功です。


<実装画像 セーブしてある褒賞データとポイントの情報>



<実装動画 獲得した褒賞のデータとポイントをそれぞれロードしてゲームを再開>
動画ファイルへのリンク


 セーブデータをクリアして何回かデバッグを行い、問題点がないか確認しておきましょう。



 以上でこの手順は終了です。

 次は 手順24 ーアルバム機能のポップアップとスクリプトの作成ー です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます