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();//ディスクへの書き込み
}
上記のコードの簡単な流れは以下の通りです。
- 変数の定義
- ハイスコアの取得(キーは「SCORE」、値がない場合は「0」を取得)
- 取得したhighscoreがscoreの値を超えた場合にハイスコアを保存する処理を実行する
- highScoreにscoreの値を格納
- ハイスコアを保存(キーは「SCORE」、highScoreの値を保存)
- デバイスのディスクに書き込み
以上が大まかな流れです。
6のディスクの書き込みを実行しないと、ゲームを終了した場合にデータが保存されないです。そのため、再度ゲームを起動した際にリセットされてしまうため、ディスクへの書き込みは忘れずに実行することをおすすめします。
※余談ですがわたしは、ディスクへの書き込みを忘れており、四苦八苦しました(笑)
ハイスコアを保存したデータの削除方法と存在確認
保存したハイスコアは何もしなければそのまま残り続けます。
もし、削除したい場合は以下のコードで削除することができます。
// "SCORE"をキーとして、ハイスコアを削除する
PlayerPrefs.DeleteKey("SCORE");
仮に保存したデータをすべて削除したい場合は以下のコードです。
// 保存データの全てを削除する
PlayerPrefs.DeleteAll();
保存したデータがあるかないかは以下のコードで判別できます。
if (PlayerPrefs.HasKey ("SCORE")) {
// 存在する
} else{
// 存在しない
}
ハイスコアを整数以外で保存したい場合
今までは、SetIntのようにInt型(整数)の関数でセーブとロードを
行いました。
もし、整数値以外をセーブとロードしたい場合はいかの関数が
用意されています。
SetInt | 整数の値を保存 |
GetInt | 整数の値を取得 |
SetFloat | 浮動小数点の値を保存 |
GetFloat | 浮動小数点の値を取得 |
SetString | 文字列の値を保存 |
GetString | 文字列の値を取得 |
おわりに
今回は、ハイスコアを保存し、アプリが終了しても記録を残す方法についてまとめました。
この方法はセーブデータ等にも応用できるため、ゲームを作成する上では必須の機能となると思います。
ぜひ、皆さんの参考になれたらと思います。
※アプリを作成する中で、不明点等でわからないことが
でてくるとおもいます。その際は、1人で悩まずに気兼ね
なく、相談したいことがあれば、コメントまたはtwitter
で連絡ください。
twiiterアカウント~otakutomo~
コメント