へなちょこプログラマ blog

ゲーム制作・プログラミング・趣味について記載するブログ

【Unity】 セーブ/ロードを実装 PlayerPrefs

目次

Unityでデータを保存するには?

ゲームのスコアなどを「セーブ・ロードしたい」といったことありませんか?

その際に使用できるのがUnityの「PlayerPrefs」という機能です!

スコアなどの単純なデータであれば、PlayerPrefsを使用できます。

docs.unity3d.com

PlayerPrefsで保存できる型

下記の3つの型でセーブ・ロードが可能です。

  • int
  • float
  • string

セーブ

値の設定
  • int : PlayerPrefs.SetInt("保存キー", 保存するデータ);
  • float : PlayerPrefs.SetFloat("保存キー", 保存するデータ);
  • string : PlayerPrefs.SetString("保存キー", 保存するデータ);

※これを呼んだだけではまだ値はディスクには書き込まれていない。

ディスクへの書き込み

PlayerPrefs.Save();

※ 呼ばなくてもアプリ終了時に保存されるが、
 アプリがクラッシュした際は保存されないようなので定期的に保存した方が良さげ。

使用例

// int型で保存
int score = 999;
PlayerPrefs.SetInt("SCORE", score);

// float型で保存
float time = 1.0f
PlayerPrefs.SetInt("TIME", time);

// string型で保存
string name = "Hoge";
PlayerPrefs.SetInt("SCORE", name);

// ディスクへの書き込み
PlayerPrefs.Save()

ロード

  • int : PlayerPrefs.GetInt("保存時のキー", 値が保存されていない際の値);
  • float : PlayerPrefs.GetFloat("保存時のキー", 値が保存されていない際の値);
  • string : PlayerPrefs.GetString("保存時のキー", 値が保存されていない際の値);
// int
int score = PlayerPrefs.GetInt("SCORE", 0);

// float
float time = PlayerPrefs.GetFloat("TIME", 0f);

// string
string name = PlayerPrefs.GetString("NAME", "NONE");

削除

キーを指定して削除

PlayerPrefs.DeleteKey("保存時にしてしたキー");

全削除

PlayerPrefs.DeleteAll();

// キーを指定して削除
PlayerPrefs.DeleteKey("SCORE");
PlayerPrefs.DeleteKey("TIME");
PlayerPrefs.DeleteKey("NAME");

// 全削除
PlayerPrefs.DeleteAll();