Unity ハイスコアを保存する~ゲーム、アプリが終了しても記録を残す方法~

Unity

Unityで作ったゲームやアプリのハイスコアを保存したい方、
ゲームやアプリを終了してもデータを保存したままにしたい
方に向けて記事をまとめました。
この方法は、PC、アンドロイド、iOSのどれにも対応しています。

※アプリを作成する中で、不明点等でわからないことが
でてくるとおもいます。その際は、1人で悩まずに気兼ね
なく、相談したいことがあれば、コメントまたはtwitter
で連絡ください。
twiiterアカウント~otakutomo~

Unity ハイスコアを保存する~ゲーム、アプリが終了しても記録を残す方法~

いきなりですが、実際に実装したコードを記載します。

public int score;    //スコア
public int highScore = 0; // ハイスコアを保持

// "SCORE"をキーとして、ハイスコアを取得
//※値がない場合は0となる。
highScore = PlayerPrefs.GetInt("SCORE", 0); 
if (highScore < score)  //ハイスコアを超えた場合に更新
{
      highScore = score;

   //"SCORE"をキーとして、ハイスコアを保存
      PlayerPrefs.SetInt("SCORE", highScore);
      PlayerPrefs.Save();//ディスクへの書き込み
}

上記のコードの簡単な流れは以下の通りです。

  1. 変数の定義
  2. ハイスコアの取得(キーは「SCORE」、値がない場合は「0」を取得)
  3. 取得したhighscoreがscoreの値を超えた場合にハイスコアを保存する処理を実行する
  4. highScoreにscoreの値を格納
  5. ハイスコアを保存(キーは「SCORE」、highScoreの値を保存)
  6. デバイスのディスクに書き込み

以上が大まかな流れです。
6のディスクの書き込みを実行しないと、ゲームを終了した場合にデータが保存されないです。そのため、再度ゲームを起動した際にリセットされてしまうため、ディスクへの書き込みは忘れずに実行することをおすすめします。

※余談ですがわたしは、ディスクへの書き込みを忘れており、四苦八苦しました(笑)

ハイスコアを保存したデータの削除方法と存在確認

保存したハイスコアは何もしなければそのまま残り続けます。
もし、削除したい場合は以下のコードで削除することができます。

// "SCORE"をキーとして、ハイスコアを削除する
PlayerPrefs.DeleteKey("SCORE");

仮に保存したデータをすべて削除したい場合は以下のコードです。

// 保存データの全てを削除する
PlayerPrefs.DeleteAll();

保存したデータがあるかないかは以下のコードで判別できます。

if (PlayerPrefs.HasKey ("SCORE")) {
    // 存在する
} else{
    // 存在しない
}

ハイスコアを整数以外で保存したい場合

今までは、SetIntのようにInt型(整数)の関数でセーブとロードを
行いました。
もし、整数値以外をセーブとロードしたい場合はいかの関数が
用意されています。

SetInt整数の値を保存
GetInt整数の値を取得
SetFloat浮動小数点の値を保存
GetFloat浮動小数点の値を取得
SetString文字列の値を保存
GetString文字列の値を取得

おわりに

今回は、ハイスコアを保存し、アプリが終了しても記録を残す方法についてまとめました。

この方法はセーブデータ等にも応用できるため、ゲームを作成する上では必須の機能となると思います。
ぜひ、皆さんの参考になれたらと思います。

※アプリを作成する中で、不明点等でわからないことが
でてくるとおもいます。その際は、1人で悩まずに気兼ね
なく、相談したいことがあれば、コメントまたはtwitter
で連絡ください。
twiiterアカウント~otakutomo~

コメント

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