Unityでデータをセーブ、ロードする方法/PlayerPrefsの使い方

saint-coloman IT

Unityで作ったデータを保存し、次回起動時に読み込む方法です。いくつかやりかたがあるようですが、とりあえず手軽に使えるPlayerPrefsについて。

スポンサーリンク

前準備

savetest1
例として、クリックで数字を増やせるようにして、現在の値を保存してみます。
2Dで適当なスプライトとテキストを用意します。スプライトにはコライダーを設定し、
//Unity C#
using UnityEngine.UI;

public class saveTest : MonoBehaviour
{
public Text text;
public int number;

void OnMouseDown()
{
//現在の数字に+1
number = int.Parse(text.text) + 1;
//数字をテキストに表示
text.text = number.ToString();
}
}
スクリプトをアタッチして、クリックするとテキストの数字が増えるようにしておきます。
テキストはインスペクターでセットします。
unity click addnumber
これでとりあえず、クリックすると数が増える状態になりました。

PlayerPrefs

//Unity C#
void OnMouseDown()
{
//現在の数字に+1
number = int.Parse(text.text) + 1;
//数字をテキストに表示
text.text = number.ToString();
//数字をセーブできる形式に変換
PlayerPrefs.SetInt("SaveNumber", number);
//数字をセーブ
PlayerPrefs.Save();
}
PlayerPrefsはUnityに元々組み込まれているセーブ方法で、Int、String、Floatのいずれかの形式であれば保存が可能です。
今回はInt形式のデータを保存してみます。
SetIntという命令でシリアル化という処理が必要ですが、要はデータをコンピュータ語に翻訳しています。
Int形式の数値を保存できる形式に変換(シリアル化)
PlayerPrefs.SetInt(“変数名”, 数値);

String形式の数値を保存できる形式に変換(シリアル化)
PlayerPrefs.SetString(“変数名”, 文字列);

Float形式の数値を保存できる形式に変換(シリアル化)
PlayerPrefs.SetFloat(“変数名”, 数値);

PlayerPrefsにセットした変数と値のセットをセーブ
PlayerPrefs.Save();

※ゲーム終了時にもSaveは自動的に行われる。

//Unity C#
void Start()
{
//Int形式の数値をロード
number = PlayerPrefs.GetInt("SaveNumber");
//数字をテキストに表示
text.text = number.ToString();
}

PlayerPrefsにセットした数字は、GetIntでロード(逆シリアル化)することができます。
このコードを実装した状態で数字を増やす→テストプレイ終了→テストプレイ開始すると、数字が全開終了時のままになっていることが確認できます。
Int形式の数値をロード(逆シリアル化)
PlayerPrefs.GetInt(“変数名”;

String形式の数値を保存できる形式に変換(シリアル化)
PlayerPrefs.GetString(“変数名”);

Float形式の数値を保存できる形式に変換(シリアル化)
PlayerPrefs.Getloat(“変数名”);

やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント