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回

PlayerPrefs,Unity

Posted by hidepon