超初心者のゲーム開発記~Unity~

超初心者がUnityでゲーム(目標はAndroidアプリ )を開発していくブログです!

【超初心者】Unity でデータをセーブ・ロードする方法!!

こんにちは!ヤギです!

今回は、ゲームを作るときに、欠かせない要素である、データのセーブとロードの方法のついてご紹介したいと思います。
※記事で紹介しているゲームも、今回の方法でデータのセーブとロードを行い、
ベストスコアを表示する機能を実装しています。
yagigame.hatenablog.com

使う機能

今回は、PlayerPrefsというゲーム内でデータのセーブやロードが可能になる機能を使います。
※ゲームを終了しても、セーブした情報は消えません!

データをセーブする方法

  • データをセーブする場合、PlayerPrefs.SetIntという機能を使います。
  • .setIntの場合、Int型の値が保存されますが、他にも.setStringなど文字列も保存できます。
  • 第一引数に、セーブするデータのキーの名前、第二引数にセーブするデータを指定します。

※実際にベストスコアをセーブするソースの例になります。
※BestScoreというキーに、bestScoreというデータを保存しています。

//ベストスコアを更新する場合
if (this.bestScore < this.speed)
{
      this.bestScore = Mathf.RoundToInt(this.speed);
      //ベストスコアに新しい値をセーブする
      PlayerPrefs.SetInt("BestScore", this.bestScore);
}

セーブデータをロードする方法

  • セーブデータをロードする場合、PlayerPrefs.GetInt("キーの名前")という機能を使います。
  • 引数にキーの名前を指定することで、セーブデータがロードできます!

※実際にセーブしたベストスコアをロードするソースの例になります。
※キーの名前がBestScoreの情報をロードし、テキストとして表示しています。

//ベストスコアを文字列に変換して表示する
this.bestScoreText.GetComponent<Text>().text =
    PlayerPrefs.GetInt("BestScore").ToString();

補足:セーブデータを削除する場合

  • セーブデータを削除する場合、PlayerPrefs.DeleteKey("キーの名前")という機能を使います。

これで、データをセーブ、ロードして表示、不要な場合は削除まで出来るようになりました!

実際に確認してみる!

今回は、冒頭ご紹介した、制作中のゲームで動作確認してみました。
※スワイプの速度を測るゲームです!
現在のベストスコアは、2171m/sです。
f:id:yagigame:20181026212344p:plain
ベストスコアよりも遅い時は、ベストスコアが更新されず、
f:id:yagigame:20181026212424p:plain
ベストスコアより早い時は、ベストスコアが更新されました!
f:id:yagigame:20181026212437p:plain


今回も記事を読んでいただきありがとうございました!