PlayerPrefsとは?
PlayerPrefs
はUnity
が用意しているデータをセーブ、ロードするための機能です。
例えば、ゲームの進行度、ゲーム内のオプション設定など、
ゲームを再開した際に再現したいデータの保存などに使えます。
動作中の端末上に保存されファイルを意識しなくても扱えます。
Dictionary
のように、Key
とValue
の形式で、データを読み書き出来ます。
保存出来るデータ形式
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
値が返ってきます。
int
、float
なら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
に保存するのはオプション設定など、
覗かれたり変更されても大丈夫なものに限定しましょう。
もしくは、暗号化することを考えてください。