セーブデータを作る

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO; // ファイル書き込みに必要

public class LocalSave : MonoBehaviour
{

    public class SaveDataClass
    {
        public string Name;
        public int[] No = new int[5];
    }
    public static List<SaveDataClass> SaveData = new List<SaveDataClass>();

    //セーブファイル名
    string FileName = "SaveFile";
    //セーブデータ名
    string DataName = "SaveData";
    // セーブパス名
    List<string> SavePath = new List<string>();

    void Start()
    {
        // セーブデータのあるアドレス
        Debug.Log(GetPath());
        // シーンを移動しても破棄されない
        DontDestroyOnLoad(this);
        // セーブデータを初期化する
        LoadLocalStageData();
    }

    // ローカルストレージから読み込み
    public void LoadLocalStageData()
    {
        // データの枠を用意
        for (int i = 0; i < 3; i++)
        {
            SaveData.Add(new SaveDataClass());
        }
        // ディレクトリが無い場合はディレクトリを作成して保存
        if (!Directory.Exists(GetPath()))
        {
            // ディレクトリ作成
            Directory.CreateDirectory(GetPath());
            // データをセーブする
            Save();
        }
        else
        {
            // データをロードする
            Load();
        }
    }

    // セーブ
    public void Save()
    {
        for (int i = 0; i < SaveData.Count; i++)
        {
            // データをjson化
            string MyJson = JsonUtility.ToJson(SaveData[i]);
            // jsonを保存
            File.WriteAllText(GetPath() + DataName + i + ".json", MyJson);
        }
    }

    // ロード
    public void Load()
    {
        // セーブデータのパスを読み込み
        SavePath = new List<string>(Directory.GetFiles(GetPath(), "*", SearchOption.AllDirectories));
        for (int i = 0; i < SavePath.Count; i++)
        {
            // jsonを読み込み
            string JsonData = File.ReadAllText(SavePath[i]);
            // jsonをデータ化
            SaveData[i] = JsonUtility.FromJson<SaveDataClass>(JsonData);
        }
        /*
        // パスを直接指定する場合
        int i = 0;
        // ファイルが存在するなら読み込む
        if (File.Exists(GetPath() + DataName + i + ".json"))
        {
            // jsonを読み込み
            string JsonData = File.ReadAllText(GetPath() + DataName + i + ".json");
            // jsonをデータ化
            SaveData[i] = JsonUtility.FromJson<SaveDataClass>(JsonData);
        }
        */
    }

    // セーブデータ削除
    public void Delete()
    {
        // セーブデータのパスを読み込み
        SavePath = new List<string>(Directory.GetFiles(GetPath(), "*", SearchOption.AllDirectories));
        for (int i = 0; i < SavePath.Count; i++)
        {
            // jsonを削除
            File.Delete(SavePath[i]);
        }
    }

    // パス取得
    string GetPath()
    {
        return Application.persistentDataPath + "/" + FileName + "/";
    }
}
これでクラスSaveDataの中にある変数が保存されます
セーブする場合はSave();
ロードする場合はLoad();
データ削除をしたい場合Delete();を実行してください

他のスクリプトのvoidを実行する方法

このスクリプトで保存したデータを確認 編集したい場合は
デバックログにあるアドレスをフォルダに入れることで確認できます



プログラムを組みなおす場合は 以前のセーブデータを削除しないと
思った通りに動かない事があるので 注意してください

戻る