Unityで学ぶC#メソッド入門:PlayerPrefsを使ったレベル保存と読み込み
目次
はじめに
Unityでゲームを作るとき、プレイヤーの進行度(レベルやスコア)を保存・読み込みするのは基本的な仕組みのひとつです。前回の記事では、SaveLevelメソッド を作ってレベルを保存しました。今回はその続きとして、LoadLevelメソッド を作ってみましょう。
保存の復習:SaveLevelメソッド
public void SaveLevel(int level)
{
if (level < 1 || 99 < level)
{
throw new Exception("レベルは1~99で指定してください");
}
PlayerPrefs.SetInt("level", level);
PlayerPrefs.Save();
Debug.Log("レベルを保存しました!");
}
- レベルをチェック(1〜99以外はエラー)
- PlayerPrefsに保存
- デバッグ用にログを出力
新しく追加:LoadLevelメソッド
保存したデータを使うには「読み込み」が必要です。そこで次のメソッドを作ります。
public int LoadLevel()
{
// "level"キーが保存されているか確認
if (!PlayerPrefs.HasKey("level"))
{
Debug.Log("レベルデータが見つかりません。デフォルト値1を返します。");
return 1; // 初期値として1を返す
}
// 保存された値を取得
int level = PlayerPrefs.GetInt("level");
Debug.Log("保存されていたレベルを読み込みました: " + level);
return level;
}
コード解説
1. HasKeyで存在確認
if (!PlayerPrefs.HasKey("level"))
- “level" というキーが保存されているかどうか確認します。
- 初めて起動したときや、まだ保存していないときはキーが存在しません。
2. デフォルト値を返す
return 1;
- レベルデータが見つからなかったときに備えて、初期レベル1 を返すようにしています。
- これでゲームの進行が止まることなく、自然に動きます。
3. 保存されている値を取得
int level = PlayerPrefs.GetInt("level");
- SetIntで保存した値を、GetIntで取り出します。
- キーとデータの型(int)が対応していることが重要です。
4. 戻り値を返す
return level;
- メソッドの戻り値としてレベルを返します。
- 呼び出し側で「今のレベル」を受け取れるようになります。
実際の使い方
void Start()
{
// レベルを保存
SaveLevel(10);
// レベルを読み込み
int currentLevel = LoadLevel();
Debug.Log("現在のレベルは " + currentLevel + " です");
}
実行結果(コンソール例):
レベルを保存しました!
保存されていたレベルを読み込みました: 10
現在のレベルは 10 です
まとめ
- SaveLevel でレベルを保存
- LoadLevel で保存したレベルを読み込み
- PlayerPrefsを使うと、キーを指定してデータを保存・取得できる
- 存在しない場合に備えて デフォルト値を返す処理 が大切
👉 応用として、スコアやアイテム数なども同じ仕組みで保存できます。
例えば PlayerPrefs.SetFloat(“score", score) でスコアを保存したり、PlayerPrefs.SetString(“item", itemName) で文字列を保存することも可能です。
訪問数 6 回, 今日の訪問数 6回
ディスカッション
コメント一覧
まだ、コメントがありません