今回は、Unityで「ゲーム内の設定」や「ハイスコア」などを保存する方法のメモです。
保存方法はいくつかありますが、一番簡単(であろう)PlayerPrefsで実装していきます。
はじめに
Unityのバージョンは2021.3.14f1で実装していきます。(大体のバージョンで同じです)
下記が公式のスクリプトリファレンスです。ゲーム セッション間のプレーヤーの設定を保存するクラスとあります。
実装例
「最高スコアを保存」、「保存した最高スコアを読み込む」を簡単に実装していきます。セーブ・ロード機能ですね、情報の保存先は各端末のレジストリです。
簡単にUIを作成
「UI」→「Legacy」→「Text」を選択。

名前をSCOREに変更して、位置やサイズ、テキスト内容を変更します。

スコアマネージャーの作成
「Create Empty」で空のオブジェクトを追加。名前はScoreManagerにします。

ScoreManagerに同じ名前のスクリプトをアタッチします。
データを記憶する(セーブ機能)
スクリプトを下記に変更。SetHighScoreを呼び出せば「highscore」というキーにvalue値が保存されます。
using UnityEngine; public class ScoreManager : MonoBehaviour { public void SetHighScore(int value) { PlayerPrefs.SetInt("highscore", value); } }
データを呼び出し(ロード機能)
ゲーム起動時にハイスコアを読み込んでセットするので下記に変更。値が保存されて無い場合の初期値は0でセットしています。
using UnityEngine; using UnityEngine.UI; public class ScoreManager : MonoBehaviour { [SerializeField] private Text _highscoreText; void Start() { int highScore = PlayerPrefs.GetInt("highscore",0); _highscoreText.text = "HIGH SCORE: " + highScore.ToString(); } public void SetHighScore(int value) { PlayerPrefs.SetInt("highscore", value); } }
後はインスペクターでテキストオブジェクトをセット。

実行すると下記のように感じに。

データ削除
レジストリからデータを削除する場合は下記の様な感じ。
public void DelHighScore() { //特定のキーと値のみ削除 PlayerPrefs.DeleteKey("highscore"); //全部のキーと値を削除 PlayerPrefs.DeleteAll(); }
補足
レジストリに値が保存してあるので、簡単な設定の保存やローカルゲーム限定と言う感じですかね。