Unityで簡単にデータを保存する

2020/11/05
カテゴリー: Unity


準備

クリックした回数を保存するプログラムを作るのでカウンターテキストオブジェクト、 カウントアップボタンオブジェクト、セーブボタンオブジェクトを作成します。


セーブ用のクラスを作る

セーブデータを定義するクラスを作ります。
セーブしたいデータはクリックした回数だけですので、 プロパティはCountのみになります。
using System;
[Serializable]
public class GameConfig
{
    public int Count;
}


カウントプログラムやセーブプログラムを作る

新たにクラスを作ります。
中身はGameConfigクラスを呼び出したり、カウントアップさせたり 保存させたりの処理です。
Start関数ではロードの処理を書きます。
using System;
using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    public GameConfig GameConfig { get; private set; }
    public Text Counter;

    void Start()
    {
        /*ロード*/
        string json = PlayerPrefs.GetString("gameconfig", null);
        GameConfig = String.IsNullOrEmpty(json) ? new GameConfig() : JsonUtility.FromJson<GameConfig>(json);
    }

    /*カウントアップ*/
    public void CountUp()
    {
        GameConfig.Count++;
        Counter.text = GameConfig.Count.ToString();
    }

    /*セーブ*/
    public void Save()
    {
        var json = JsonUtility.ToJson(GameConfig);
        PlayerPrefs.SetString("gameconfig", json);
    }
}

スクリプトはこれだけで、残りはスクリプトを適用させたりするだけです。

オブジェクトにスクリプトを適用させる

まずは、先ほど作ったテストクラスをEventSystemオブジェクトに適用し、 Counterのところにはじめに準備したCounterテキストオブジェクトをセットします。


次にCountUpボタンオブジェクトとSaveボタンオブジェクトのそれぞれのOnClickにメソッドをセットします。



これで完成しました!

完成

実行してみるとこんな感じです。


しっかりと保存されてますね!