#17 ハイスコアの処理

2Dシューティング
このブログは、趣味でプログラミングを勉強中の筆者が、実験を繰り返しながら、WordPressの使い方の練習も兼ねて、備忘録のように記事を残していくものです。Unityのバージョンは6000.0.32f1です。

せっかくなので、ハイスコアの表示もしたらもう少しゲームらしくなるのではないでしょうか。

今回のゴール

ハイスコアを表示する

ハイスコアの仕組み

ハイスコアは整数で管理できます。ゲームオーバーの時に、今のハイスコアと今回のスコアを比べて、今回のスコアが高ければハイスコアとして登録する仕組みにしましょう。ハイスコアはどこかに保存して、アプリを停止しても残るようにします。

ハイスコアを表示する仕組み

ステージマネージャーにハイスコアを表示する仕組みを作ります。

StageManager.cs

続いて、High Scoreと表示するラベルと、ハイスコアを表示するテキストボックスを配置します。

ハイスコアを表示するテキストボックスには、HIGHSCOREという名前を着けました。

ヒエラルキーでStageManagerを選ぶとインスペクタにHigh Score Textという欄が現れているので、ヒエラルキーからHIGHSCOREをドラッグしてセットします。これで、HIGHSCOREのテキストボックスとStageManager.csHighScoreTextが紐付きました。StageManager.csから、HighScoreText.textを変更することで、HIGHSCOREの表示を変更することが出来ます。

ハイスコアを保持する仕組み

GameDataにint型の変数を用意します。

GameData.cs

続いて、StageManagerにハイスコアを読み込む仕組みを作ります。

StageManager.cs

PlayerPrefsは簡単なデータをディスクで読み書きするUnityの機能です。ファイルのオープンやクローズなど面倒な操作を省略できます(裏でUnityが頑張ってくれてる)。

PlayerPrefs.GetInt(“HighScore”, 0)で、“HighScore”という文字列をキーとして、対応する数値があれば読み出すことができます。キーに対応する数値がなければ、第2引数(Default value)の0にセットされます。

PlayerPrefs-GetInt - Unity スクリプトリファレンス
キーが存在する場合、key に対応する値を取得します。

続いて、HighScoreText.text = GameData.highScore.ToString()で、読み出した数値をHIGHSCOREテキストボックスに表示します。

ハイスコアを更新する仕組み

StageManager.cs

ハイスコアの更新はコードを見れば分かると思います。最後の2行でハイスコアをディスクに保存しています。これで、ハイスコアが保存されるようになりました。アプリを再起動してもハイスコアは保持されているのが分かります。

今回はここまでです。お疲れ様でした。

コメント

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