【Unity】データ保存(セーブ)機能を実装しよう!

Unity Unity

データ保存(セーブ)機能を実装しよう!

今回は、データ保存機能を実装します。

データ保存機能とは、ゲームを終了しても、保存してあるデータを読み込み続きからゲーム行うことができます。

基本的にどんなゲームを作る際でも必ず必要な機能になるので、しっかりと覚えましょう!

PlayerPrefsを使ってデータ保存できるようにしよう!

PlayerPrefsとは

ゲームデータのセーブやロードを行えるようにするものです。

今回はセーブ機能の解説をしますが、PlayerPrefsを使うことで下記のようなこともできます。

Static 関数

DeleteAll 設定情報からすべてのkeyと値を削除
DeleteKey 設定情報からkeyと対応する値を削除
GetFloat keyが存在する場合、keyに対応する値を取得(Float型)
GetInt keyが存在する場合、keyに対応する値を取得(Int型)
GetString keyが存在する場合、keyに対応する値を取得(String型)
HasKey keyが設定に存在した場合、trueを返す
Save 変更された値をディスクへ保存
SetFloat keyで識別される設定される設定情報の値を設定(Float型)
SetInt keyで識別される設定される設定情報の値を設定(Int型)
SetString keyで識別される設定される設定情報の値を設定(String型)

スクリプトを作成

今回は、PlayerPrefsを使ってデータ保存ができるようにします。

Assets→Create→C#Script

Add-Script

 

今回のスクリプトはゲームを管理するスクリプトなので、スクリプト名はGameManagerにします。

GameManagerスクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
void Start()
{
//セーブデータがる場合は、"Save_Data"Keyが引き出される
//セーブデータがない場合は、"No Data"Keyが引き出される
string saveString = PlayerPrefs.GetString("Save_Data", "No Data");
//端末に入ってるデータを読み込む
Debug.Log(saveString);

//データを設定する
PlayerPrefs.SetString("Save_Data","Have Data");
//設定したデータを保存
PlayerPrefs.Save();
}

}

GameObjectを追加

GameManagerスクリプトを作成しましたが、Assetsフォルダ内にあるだけでは使えないので、使うためのオブジェクトを追加します。

Hierarchy→Create Empty

Add-GameObject

GameObjectにGameManagerスクリプトをドラックアンドドロップして追加します。

Add-GameManager

これで準備が整いました。

実行結果

1度目の実行では、デバックログにNo dataと表示されます。

No-Data

2度目の実行では、1度目にHave Dataを設定しているのでHave Dataと表示されます。

Have-Data

これでデータ保存機能の実装ができました。

配列でやってみる!

スクリプトを変更

配列でやるためにGameManagerスクリプトを少し変更します。

GameManagerスクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
void Start()
{
string[] saveStringList = new string[3];

for(int i=0; i<saveStringList.Length; i++)
{
//セーブデータがる場合は、"Save_Data"Keyが引き出される
//セーブデータがない場合は、"No Data"Keyが引き出される
string saveString = PlayerPrefs.GetString("Save_Data"+i, "No Data");
//端末に入ってるデータを読み込む
Debug.Log(saveString);
}

for (int i = 0; i < saveStringList.Length; i++)
{
//データを設定する
PlayerPrefs.SetString("Save_Data"+i, "Have Data"+i);
//設定したデータを保存
PlayerPrefs.Save();
}
}

}

実行結果

1度目は何のデータも入っていないのですべてNo dataになります。

No-Data

2度目は、1度目にHave Dataと配列を設定しているのでHave Dataと配列に値が代入されたものが表示されます。

Have-Data

まとめ

今回は、データ保存機能を実装しました。

基本的にどんなゲームを作る際でも必ず必要な機能になるので、しっかりと覚えましょう!

コメント

タイトルとURLをコピーしました