セーブデータ | vicのブログ

vicのブログ

ツール系やソフト開発について書こうと思っています。
書き込み大歓迎です。
間違いとかもっといい方法とかあったらご指摘いただけるとありがたいです。
質問をいただいたら、記事をもっとわかりやすく変更します。

ファイルセーブ方法

 

http://magnaga.com/unity/2016/01/11/unity-save/

 

 

という方法があるらしい。

 

しかし、面倒だったので、

C#の基本命令の

BinaryWriter
BinaryReader
で作ったらうまく動作した。

フリーツールで、FBXBIN でファイルの中身を確認

さらにはブレークポイントを入れてアタッチ起動(VisualStudioでファンクション5キーを押す)

でロードの確認

しかし、PC以外での動作確認はしていない。

 

テストコード

 

 

using UnityEngine;
using System.Collections;
using System.IO;

public class SaveData : MonoBehaviour {

    MySaveData saveData;
    MySaveData saveDataTest;
    // Use this for initialization
    void Start() {
        saveData = new MySaveData{ a = 1,b=2,c=3 };
        using (var w = new BinaryWriter(File.OpenWrite("saveData.dat")))
        {
            w.Write(saveData.a);
            w.Write(saveData.b);
            w.Write(saveData.c);
            w.Close();
        }


	}
	
	// Update is called once per frame
	void Update () {
        if(Input.GetKeyDown(KeyCode.Return))
        {
            print("return key was pressed");
            Load();
        }
        if (Input.GetKeyDown(KeyCode.Space))
            print("space key was pressed");

    }
    void Load()
    {
        using (var r = new BinaryReader(File.OpenRead("saveData.dat")))
        {
            saveDataTest.a=r.ReadInt32();
            saveDataTest.b=r.ReadInt32();
            saveDataTest.c=r.ReadInt32();
            r.Close();
        }
    }

}
public struct MySaveData
{
    public int a, b, c;
}

 

セーブもメソッド化は後でしておこう。

 

セーブファイルはプロジェクトのフォルダ内に生成される。

 

ロードしたりセーブしたりする順序は全く同じにすること。
でないと、値が入れ替わったり、ロードやセーブの変数の個数が違うとエラーになる。