FC2ブログ
10 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 12

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】データ保存をJsonでやってみた。 

こんにちは。
大坂です。

秋らしくなってきたようなそうでもないような?
関東でまだ30度超える日がるみたいなので早く涼しくなってほしいですね。

今更ですがデータの保存をJsonにしてやってみたのでこんな感じだったよというお話。

まぁ簡単にこんな感じでゲームの情報を持ってるクラスを作って。
using System;

[Serializable]
public class GameData {

public int money;
public CharacterData charaData;

[Serializable]
public class CharacterData {
public int level;
public int hp;

public void Init() {
level = 1;
hp = 100;
}
}

public void Init() {
money = 500;
charaData = new CharacterData();
charaData.Init();
}
}


こんな感じでセーブとロードのクラスも作ってあげれば終わりです。
using System.IO;
using UnityEngine;

public class SaveTest : MonoBehaviour {

string filePath;
public GameData gameData;

private void Start() {
filePath = Application.persistentDataPath + "/SaveData.json";
Load();
}

public void Save() {
using(FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) {
using(StreamWriter sw = new StreamWriter(fs)) {
sw.WriteLine(JsonUtility.ToJson(gameData));
}
}
}

public void Load() {
if(!File.Exists(filePath)) {
gameData = new GameData();
gameData.Init();
return;
}

using(FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) {
using(StreamReader sr = new StreamReader(fs)) {
GameData data = JsonUtility.FromJson(sr.ReadToEnd());
gameData = data;
}
}
}
}


セーブしてあげると、指定したパスこんな感じの内容のファイルができてますね!



取り合ずこんな感じで簡単にできたよというお話でした。

あ、ついでにデータ消すときにわざわざ作った場所に行って消すのが面倒な場合は
こんなメソッド作って実行すればいいですね。
    public void Delete() {
if(File.Exists(filePath)) {
FileInfo fi = new FileInfo(filePath);
fi.Delete();
}
}


では今週もこんな感じで終わりです。
またノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://halcyonsystemblog.blog.fc2.com/tb.php/536-7d99c55d
この記事にトラックバックする(FC2ブログユーザー)