PlayerPrefsとは?

PlayerPrefsUnityが用意しているデータをセーブ、ロードするための機能です。 例えば、ゲームの進行度、ゲーム内のオプション設定など、 ゲームを再開した際に再現したいデータの保存などに使えます。 動作中の端末上に保存されファイルを意識しなくても扱えます。 Dictionaryのように、KeyValueの形式で、データを読み書き出来ます。

保存出来るデータ形式

  • int
  • float
  • string

対応しているのはこの3種類ですが、 保存時にstringにし、取得時の元の型に戻してやれば 任意のデータを保存出来ます。

データを更新する

データを書き込み、更新するにはPlayerPrefs.Set系メソッドを使用します。 第1引数がKey、第2引数がValueになります。 以下の場合、HighScoreという名前で123456を保存しています。

PlayerPrefs.SetInt("HighScore", 123456);

データを取得する

データを取得するにはPlayerRefs.Get系メソッドを使用します。 第1引数がKeyで戻り値に値が返ってきます。

int highScore = PlayerPrefs.GetInt("HighScore");

まだ、指定した名前の値が存在しない場合、型のdefault値が返ってきます。 intfloatなら0、stringなら空の文字列です。 まだデータは無いが、初期値を指定したい場合は第2引数で指定できます。 以下の場合、HighScoreがあればその値を、なければ1000000が返ってきます。

int highScore = PlayerPrefs.GetInt("HighScore", 1000000);

データが存在するか?

PlayerPrefs.HasKeyで調べることが出来ます。

if (PlayerPrefs.HasKey("HighScore"))
{
	// HighScoreがある
}

データを削除する

PlayerPrefs.DeleteKeyで削除できます。

PlayerPrefs.DeleteKey("HighScore");

全て削除したい場合は、DeleteAllを使用します。

PlayerPrefs.DeleteAll();

PlayerPrefsの保存

PlayerPrefs.Saveでそれまでの変更を保存出来ます。

PlayerPrefs.Save();

PlayerPrefsの保存先

保存先はプラットフォームによって異なります。

通常はファイルの場所を気にする必要はないと思いますが、

以下のスクリプトリファレンスから保存先を知ることが出来ます。

注意点

PlayerPrefsを使って簡単にデータを保存出来ますが、 実は簡単に中身を覗けてしまいます。 ゲームの進行度を保存するのは致命的です。 PlayerPrefsに保存するのはオプション設定など、 覗かれたり変更されても大丈夫なものに限定しましょう。 もしくは、暗号化することを考えてください。