【超初心者】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です。
ベストスコアよりも遅い時は、ベストスコアが更新されず、
ベストスコアより早い時は、ベストスコアが更新されました!
今回も記事を読んでいただきありがとうございました!