せっかくなので、ハイスコアの表示もしたらもう少しゲームらしくなるのではないでしょうか。
ハイスコアを表示する
ハイスコアの仕組み
ハイスコアは整数で管理できます。ゲームオーバーの時に、今のハイスコアと今回のスコアを比べて、今回のスコアが高ければハイスコアとして登録する仕組みにしましょう。ハイスコアはどこかに保存して、アプリを停止しても残るようにします。
ハイスコアを表示する仕組み
ステージマネージャーにハイスコアを表示する仕組みを作ります。
public Text HighScoreText; // ハイスコアを表示するUIテキスト
続いて、High Scoreと表示するラベルと、ハイスコアを表示するテキストボックスを配置します。

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

ヒエラルキーでStageManagerを選ぶとインスペクタに という欄が現れているので、ヒエラルキーからHIGHSCOREをドラッグしてセットします。これで、HIGHSCOREのテキストボックスとStageManager.csのHighScoreTextが紐付きました。StageManager.csから、HighScoreText.textを変更することで、HIGHSCOREの表示を変更することが出来ます。
ハイスコアを保持する仕組み
GameDataにint型の変数を用意します。
public static class GameData
{
・・・
public static int highScore = 0; // ハイスコアを初期化
}
続いて、StageManagerにハイスコアを読み込む仕組みを作ります。
void Start()
{
・・・
GameData.highScore = PlayerPrefs.GetInt("HighScore", 0); // ハイスコアを保存から読み込む
HighScoreText.text = GameData.highScore.ToString(); // ハイスコアテキストを初期化
・・・
}
PlayerPrefsは簡単なデータをディスクで読み書きするUnityの機能です。ファイルのオープンやクローズなど面倒な操作を省略できます(裏でUnityが頑張ってくれてる)。
PlayerPrefs.GetInt(“HighScore”, 0)で、“HighScore”という文字列をキーとして、対応する数値があれば読み出すことができます。キーに対応する数値がなければ、第2引数(Default value)の0にセットされます。
続いて、HighScoreText.text = GameData.highScore.ToString()で、読み出した数値をHIGHSCOREテキストボックスに表示します。
ハイスコアを更新する仕組み
GameData.gameState = GameState.GameOver; // ライフが0になったらゲームオーバー状態に変更
// ハイスコアの処理
if (GameData.score > GameData.highScore) // ハイスコアを上回ったら
{
GameData.highScore = GameData.score; // ハイスコアを更新
}
PlayerPrefs.SetInt("HighScore", GameData.highScore); // ハイスコアをPlayerPrefsに保存
PlayerPrefs.Save(); // PlayerPrefsの変更をディスクに保存
ハイスコアの更新はコードを見れば分かると思います。最後の2行でハイスコアをディスクに保存しています。これで、ハイスコアが保存されるようになりました。アプリを再起動してもハイスコアは保持されているのが分かります。

今回はここまでです。お疲れ様でした。
コメント