[Unity] データを保存する(PlayerPrefs)

どうも、tatsuです!

今回はデータを保存するもっとも簡単な方法である、PlayerPrefsというものについて説明しようと思います。

[Unity] データを保存する(外部ファイルCSV)

2017.12.10

PlayerPrefsとは?

PlayerPrefsとは、Unityが提供しているデータ保存方法です。
少し凝ったゲームを作る場合、どうしても永続的なデータの保存が必要になってきます。
例えばシューティングゲームであれば最高得点をランキング形式で表示したり、RPGであれば進んだ場所や持ち物などが対象になります。
 
PlayerPrefsでは本格的なデータ保存には向かないですが、簡単なデータの保存なら役に立ちます。
なぜ本格的なデータ保存に向かないかと言いますと、PlayerPrefsは以下の型しか保存できないのです。

  • String型(文字列)
  • int型(整数)
  • float型(浮動小数点数)
このように制限はありますが、使用方法はとっても簡単なので見ていきましょう!
また、本格的にデータ保存をするにはCSV,JSONファイルを使用するか、データベースを使用するかの2択になるかと思います。
CSV,JSONについては他の記事で説明しようと思いますが、データベースはUnityが標準で対応しているものが無いので少々実装が難しくなるかと思うので、やってみたい方は調べてみてください。

PlayerPrefsを使ってデータを保存する

PlayerPrefsではキーと値をセットにして保存します。
例えば「Price」というキーで「500」という値を保存すると、「Price」と指定すれば「500」という値が返ってきます。
キーが被った場合は上書きされるので注意しましょう。
 
具体的に以下のようなスクリプトを書きます。

// キー:Price 値:0を保存
PlayerPrefs.SetInt("Price", 0);
// キーがPriceの値を取得
int price = PlayerPrefs.GetInt("Price");

また、値を取得する際に指定したキーの値が登録されていない場合があります。
そんな時は第二引数に値を指定することでデフォルト値として扱うことができます。

// キーがPriceの値はまだ登録されていないが、デフォルト値の100が取得される
int price = PlayerPrefs.GetInt("Price",100);

PlayerPrefsのメソッド一覧

基本的な使い方がわかったところで、PlayerPrefsで使用できるメソッドをすべてご紹介します。

値を保存する

// String型の値を保存する
PlayerPrefs.SetString(キー, 値);

// int型の値を保存する
PlayerPrefs.SetInt(キー, 値);

// float型の値を保存する
PlayerPrefs.SetFloat(キー, 値);

値を取得する

// String型の値を取得する
String str = PlayerPrefs.GetString(キー);
// String型の値を取得する(デフォルト値を指定する場合)
String str = PlayerPrefs.GetString(キー,デフォルト値);

// int型の値を取得する
int i = PlayerPrefs.GetInt(キー);
// int型の値を取得する(デフォルト値を指定する場合)
int i = PlayerPrefs.GetInt(キー,デフォルト値);

// float型の値を取得する
float f = PlayerPrefs.GetFloat(キー);
// String型の値を取得する(デフォルト値を指定する場合)
float f = PlayerPrefs.GetFloat(キー,デフォルト値);

キーと値を削除する

// 指定したキーと値を削除する
PlayerPrefs.DeleteKey(キー);

// すべてのキーと値を削除する
PlayerPrefs.DeleteAll();

キーが存在するか調べる

// キーが存在していたらtrue,存在しなかったらfalseが返る
bool b = PlayerPrefs.HasKey(キー);

強制的にデータを保存する

通常、データはアプリケーション終了時に本体に保存されます。
ですが異常終了した場合には保存されないので、必ず保存しておきたい箇所などで呼ぶと良いでしょう。

// 全ての変更を保存する
PlayerPrefs.Save();

まとめ

いかがでしたか?
今回はデータを保存する方法の1つである、PlayerPrefsについて記事を書きました!
データを保存することでゲーム性は大幅に広がると思うのでぜひ使ってみてください!
それでは!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です