Unityに関連する記事です

 前回に引き続き、お使いの情報に関連する処理の実装を行います。

 OfflineTimeManager クラスにてお使いごとの時間の経過を管理できるようになりましたので、この時間をセーブする処理を実装します。
セーブのタイミングは2か所で、1つはお使いを開始したときと、もう1つは時間のセーブと同じで、ゲームを終了したタイミングです。


<実装動画 ,使いを開始したとき>
動画ファイルへのリンク


<実装動画◆.押璽爐鮟了したとき>
動画ファイルへのリンク


手順15 −お使いの時間データをセーブする処理の実装−
25.OfflineTimeManager スクリプトと GameManager スクリプトを修正して、お使いの残り時間をセーブできる機能を追加する



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

 ・問題点の切り分けと細分化 ー自分で処理を書くことに挑戦する。いま書ける処理とイメージがわかなくて書けない処理とに問題点を切り分けるようにしていくー



25.OfflineTimeManager スクリプトと GameManager スクリプトを修正して、お使いの残り時間をセーブできる機能を追加する

1.設計


 お使いの残り時間の管理が OfflineTimeManager クラスにて出来るようになりましたので、
この手順は、お使いの残り時間をセーブするための機能を実装し、実際にセーブを行う処理も合わせて実装を行います。

 セーブを行うタイミングとしては、以下の2つです。

 ・お使いを開始したとき
 ・ゲームを終了したとき

 OfflineTimeManager クラスには、JobTimeData クラスをセーブするために情報を用意して実行するメソッドを作成します。
また、「ゲームを終了したとき」のタイミングでセーブを行いたいので、このタイミングで処理が実行される OnApplicatinQuit メソッド内に
新しく作成するセーブのためのメソッドを実行する処理も追加します。

 「お使いの開始したとき」のタイミングは GameManager クラス内にありますので、そちらにもセーブするメソッドを実行する処理を追加します。
OfflineTimeManager クラスはシングルトン・デザインパターンのクラスですので、外部のクラスからでも簡単にセーブ用のメソッドを呼び出すことが出来ます。


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


 お使いのデータをセーブするタイミングを考えて、適宜な位置にセーブを行うための処理を記述します。
OfflineTimeManager スクリプトという、時間を管理しているクラスにおいてセーブするべきタイミングがどのメソッドにあるのかを、処理を見直してみてください。

 JobTimeData クラスの情報をセーブするために、PlayerPrefsHelper クラスに用意してある SaveSetObjectData メソッドを実行します。
このメソッドではクラスの情報を Json に変換して PlayerPrefs クラスでセーブを行えるようになっているためです。

 セーブする際の static クラスである PlayerPrefsHelper クラスのメソッドの呼び出し命令の書式を覚えていってください。

 なお、セーブを行う場合、「セーブのタイミング」の他に、「セーブする対象のお使いのデータがあるのか」、「複数ある場合にはどうやってそれらをセーブするのか」、
そういった部分も処理の設計としては考えていく必要があります。

 どのようにすればセーブにまつわるロジックを組みこんでいけるのか、自分で考えてみてください。
処理のイメージが出来たらまずは、日本語のコメントを該当するメソッド内に記述し、それから処理を記述していってみましょう。

 自分がいま書ける処理を考えて書いてみる。そうすることで、自分がいま書けない処理、イメージがわかない処理との細分化が図れます。
そうすることによってはじめて、自分が調べるべき問題、考えるべき処理の見極めが行えるようになります

 これを何回も繰り返してプログラムは覚えていくことになります。
 教材の確認は自分で挑戦したあとで問題ありません。


OfflineTimeManager.cs


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


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


 前回の手順で TODO を記述してあった場所のうち、JudgeSubmitJob メソッド内に残っている未実装の処理を実装してセーブの実行を行います。

 こちらにはどうような処理があり、どのようなタイミングでセーブを行えばよいかを考えてみてください。

 セーブを行うタイミングは最初に書いてあるように2か所です。その内の「ゲームを終了したとき」については OfflineTimeManager スクリプト内に記述しましたので、
残っている部分は、「お使いを開始した」タイミングです。この部分がどこに該当するかを見定めて、セーブを行うように処理を追加しています。

 今回も教材を見る前に、どの位置に、どんな処理を書くことが出来れば考えている処理を実装できるのか、まずは挑戦してみてください。


GameManager.cs

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


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


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


 セーブを行うタイミングが2か所ありますので、それぞれの処理を行った際に Console ビューに Debug.Log メソッドに指定してある
セーブ用のメッセージが表示されていれば、制御成功です。


<実装動画 ,使いを開始したとき>
動画ファイルへのリンク


<実装動画◆.押璽爐鮟了したとき>
動画ファイルへのリンク


 どちらも、OfflineTimeManager スクリプトの JobTimeData クラスの情報に基づいて、お使いの残り時間を表示しています。
必ず、OfflineTimeManager スクリプトのインスペクターと、セーブした処理の内容を一緒に確認しながら、制御内容を把握しておいてください。

 Unity では Console ビュー以外にも、スクリプトが制御を行っている情報をインスペクターから確認できるものがあります。
処理を覚えてプログラムを上達していくコツは、処理の繋がりをしっかりとイメージし、実際に動いている制御処理とリンクさせてください。
そしてそれを常に意識して、自発的に行えるようになっていけるようにしてください。


 以上でこの手順は終了です。
 
 次は 手順16 −お使いの時間データをロードしてお使いの完了を判定する処理の実装− です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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