今回はUnityでデータをセーブする方法を書いていきます。

まず、セーブ方法には下記の4点が挙げられます。

1.PlayerPrefs
2.Json Serialization
3.Binary Serialization
4.Database


今回は1.PlayerPrefsについて書いていきます。

PlayerPrefsの使い方

PlayerPrefsクラスを使用するためには、まず「using UnityEngine」を追加します。


PlayerPrefsは実装が簡単な一方で、

大量のデータを保存できないというデメリットを兼ね備えています。

小規模なゲームであれば全然問題ないです。


データの保存

下記のように使うことで、データをシンプルなKey-Value形式で保存できます。

PlayerPrefs.SetInt("highScore", score);
PlayerPrefs.Save();
上記の例では、"highScore"という名前で変数scoreのデータを保存しました。

PlayerPrefs.SetStringを呼び出すと、指定されたKey名でValue値がメモリ内に保存されます。
PlayerPrefs.Saveを呼び出すと、メモリ内の値がディスクに書き込まれます。
これにより、Key-Valueのペアが永続化され、次回起動時にも同じ値を取得することができます。

保存できる型は下記の通りです。
メソッド保存値の型
SetIntメソッド整数値 (int)
SetFloatメソッド浮動小数点数 (float)
SetStringメソッド文字列 (string)

データの取得

保存したデータは、
下記のようにKeyを指定することで、データを読み込むことができます。

int highScore = PlayerPrefs.GetInt("highScore");
上記の例では、"highScore"という名前で保存しているデータを読み込み、highScoreに代入しました。

取得できる型は下記の通りです。
メソッド保存値の型
GetIntメソッド整数値 (int)
GetFloatメソッド浮動小数点数 (float)
GetStringメソッド文字列 (string)

データの削除

データの削除には、

一部のデータを削除する方法と全てのデータを削除する方法があります。


一部データの削除

下記のように、Keyを指定して一部のデータだけ削除できます。

PlayerPrefs.DeleteKey("highScore");
PlayerPrefs.Save();
PlayerPrefs.Saveを呼び出すと、メモリ内の値がディスクに書き込まれます。


全てのデータの削除

また下記のように、DeleteAllメソッドを使うことで、全てのデータを削除もできます。

PlayerPrefs.DeleteAll();
PlayerPrefs.Save();
PlayerPrefs.Saveを呼び出すと、メモリ内の値がディスクに書き込まれます。

ちなみにUnityのEdit>Clear All PlayerPrefsからも消すことができます。


データの判定

PlayerPrefsにデータがあるかどうかの判定は、下記のようにします。

if (PlayerPrefs.HasKey("highScore"))
{
    // highScore の値を取得する
    int highScore = PlayerPrefs.GetInt("highScore");
}
else
{
    // データが存在しない場合の処理
}
「PlayerPrefs」クラスの「HasKey」メソッドを使用することで、PlayerPrefsにデータがあるかどうかの判定ができます