Unityで作ったゲームやアプリで「ハイスコアを保存して、アプリを終了しても記録を残したい」と思ったことはありませんか?
この記事では、Unity初心者の方でも簡単に実装できる「ハイスコア保存方法」について解説します。
PlayerPrefsを使った保存方法で、PC・Android・iOSなど幅広いプラットフォームに対応しています。
「セーブ処理って難しそう…」と感じる方にもわかりやすいように、コード例と説明を交えて丁寧に紹介しています。
💬 わからないことがあれば、遠慮なくコメント欄やX(旧Twitter)でご相談ください!
📱 アカウント → @otakutomo
Unityでハイスコアを保存する方法【PlayerPrefs】
まずは実際に使える実装コードを紹介します。
この方法で、ゲーム終了後もハイスコアのデータを保持することができます。
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とhighScoreの変数を定義
- PlayerPrefs.GetInt(“SCORE”, 0) で過去のスコアを取得(初回は0)
- score > highScore ならば新しいスコアで上書き
- PlayerPrefs.SetInt() で保存し
- PlayerPrefs.Save() でディスクに反映する(これが超重要!)
以上が大まかな流れです。
💡 注意点:PlayerPrefs.Save()
を忘れると、アプリ終了時にデータが保存されず、次回起動時にハイスコアがリセットされてしまいます。
※余談ですがわたしは、ディスクへの書き込みを忘れており、四苦八苦しました(笑)
このように、PlayerPrefs
を使えば簡単にデータの保存ができるので、ハイスコア機能の第一歩としてぜひ使ってみてください!
ハイスコアを削除する方法【PlayerPrefs】
保存したハイスコアは何もしなければアプリを再起動しても残り続きます。
開発中にリセットしたい場合や、初期化ボタンを実装したいときは、以下のコードで削除できます。
🔸 特定のキー(ハイスコア)を削除する
// "SCORE"をキーとして、ハイスコアを削除する
PlayerPrefs.DeleteKey("SCORE");
🔸 全ての保存データを削除する
// 保存データの全てを削除する
PlayerPrefs.DeleteAll();
⚠️ DeleteAll()
はすべてのデータが消えるため注意が必要です。
スコア以外にも設定やセーブデータがある場合は、個別に DeleteKey()
を使う方が安全です。
🔍 保存データの存在を確認する方法
保存されたデータが存在するかどうかを確認するには、PlayerPrefs.HasKey()
を使います。
if (PlayerPrefs.HasKey ("SCORE")) {
// 存在する
} else{
// 存在しない
}
例:データがなければ初期値で表示する場合
if (PlayerPrefs.HasKey("SCORE")) {
int highScore = PlayerPrefs.GetInt("SCORE");
Debug.Log("ハイスコア:" + highScore);
} else {
Debug.Log("ハイスコアの保存データがありません");
}
ハイスコア以外のデータ型も保存できる?【PlayerPrefsの型別関数】
これまで紹介した PlayerPrefs.SetInt()
や GetInt()
は整数(int型)のスコア保存に使う関数でした。
実は、PlayerPrefsでは他にも3種類のデータ型を保存・取得できます。
以下に、保存&取得用の関数を一覧で紹介します。
保存関数 | 説明 | 対応する取得関数 |
SetInt(string key, int value) | 整数を保存 | GetInt(string key) |
SetFloat(string key, float value) | 浮動小数点を保存 | GetFloat(string key) |
SetString(string key, string value) | 文字列を保存 | GetString(string key) |
使用例
🔹 浮動小数点(例:クリアタイムの保存)
csharpコピーする編集する// 保存
PlayerPrefs.SetFloat("ClearTime", 12.34f);
// 取得
float clearTime = PlayerPrefs.GetFloat("ClearTime");
🔹 文字列(例:プレイヤー名の保存)
csharpコピーする編集する// 保存
PlayerPrefs.SetString("PlayerName", "Tomo");
// 取得
string playerName = PlayerPrefs.GetString("PlayerName");
まとめ:ハイスコア保存の基本はPlayerPrefsでOK
今回は、Unityでハイスコアを保存する方法について解説しました。PlayerPrefs
を使えば、ゲーム終了後でもスコアを保持できる簡単なセーブ処理が実装できます。
この方法はハイスコアだけでなく、クリアタイムやプレイヤー設定など他のセーブデータにも応用可能です。
ゲーム開発では欠かせない基礎知識なので、ぜひ実際にプロジェクトで使ってみてください。
🧩 さらに学びたい方へおすすめ教材はこちら:
🚀 次のおすすめ記事:
💬 ご質問や不明点があればお気軽にご連絡ください!
コメント欄、またはX(旧Twitter)でも受け付けています。
📱 Twitter → @otakutomo
コメント