Unityに関連する記事です

 ユーザーのプレイデータを GameData クラス内に List 化して記録できるようになりました。
この機能を利用して獲得している褒賞のデータをセーブ・ロードする機能を追加します。

 セーブとロードは別々にロジックを考えて実装します。これらの機能は複雑ですので、手順も2つに分けます。
 
 セーブ・ロード機能を実装できれば、ゲームを開始した際に、以前までユーザーが獲得していた褒賞の情報を引きついだ状態で再開出来るようになります。


手順22 −ユーザーのプレイデータをセーブする機能の実装−
38.GameData スクリプトを修正する
39.GameManager スクリプトを修正し、獲得した褒賞のデータを PlayerPrefsHelper クラスを利用してセーブする処理を実装する



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

 ・セーブ実行を確認するための Debug.Log メソッドの処理を、自分で考えて実装する



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

1.設計


 セーブの処理の流れも、OfflineTimeManager クラスの JobTimeData クラスの情報をセーブした場合と同じ処理の流れで設計を行います。
つまり、同じ手順を設計してロジックを組めば、それでセーブ機能を実装できることにもなります。

 セーブを行いたい情報を設定して、それを PlayerPrefsHelper クラスを利用してセーブします。
そのためにはどのようにすればいいのかを、OfflineTimeManager クラスの設計を見ながら自分で考えてみましょう。


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


 セーブの処理についてはそれぞれにメソッドを準備しておいて、そのメソッドを外部のクラスより実行してもらうようにします。
実際のセーブ処理は PlayerPrefsHelper クラスを利用して行います。すでにメソッドが用意されていますので、そちらを活用します。

 褒賞の情報はクラスであるため、PlayerPrefs クラスにはそのままセーブできません。
OfflineTimeManager クラスの JobTimeData クラスをセーブしたときとおなじように、Json 形式に変換して string 型でセーブをしておきます。
そしてロード時に復元を行う処理になります。

 ポイントの値は int 型ですので、そのままセーブ可能です。こちらも PlayerPrefsHelper クラスにあるメソッドを利用します。

 汎用性のあるユーティリティクラスを1つ作成しておくことで、新しいセーブ情報が増えた場合にも、ユーティリティクラスのメソッドをそのまま活用できるため、非常に便利です。


GameData.cs

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


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

 前回の手順に引き続き、今回の実装ではどのような処理が行われているのか、復習を兼ねて読み返して理解を深めてください。

 処理を記述して実装をしていくことが教材の目的ではありません

 どのように利用しているのかを自分で使い方を含めて学習し、今後、自分の製作するゲームにで利用していけるようにしていくことが大切です。


39.GameManager スクリプトを修正し、獲得した褒賞のデータを PlayerPrefsHelper クラスを利用してセーブする処理を実装する

1.設計


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


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


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

 褒賞ごとのポイントの加算処理と、褒賞を List に追加する処理を行ったあとに、処理を実装することで、最新のユーザーのデータをセーブすることが出来ます。
そのため、処理を書きこむ順番も大切であることを念頭に置いて処理を書いてみてください。

 また次回のロードのために、Start メソッドの TODO をさらに細分化して、処理の具体的な内容と記述しておきます
次回の実装のためのヒントになります。このように、事前に日本語でコメントを用意しておくと処理を組み立てるイメージが沸きやすくなりますので、
自分で気づいたタイミングで TODO を書き込むように癖付けしていきましょう


GameManager.cs

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


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


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


 セーブ処理が実行されているかどうかを確認するためには、内部的な処理になっているため、適宜なタイミングで Debug.Log メソッドを実行して確認する必要があります。

 どの部分に Debug.Log メソッドの処理をいれればセーブを実行していることが確認できるか、適宜な位置を自分で考えて処理を実装して確認を行ってください。



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

 次は 手順23 ーユーザーのプレイデータをロードしてゲーム内に反映する機能の実装ー です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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