[Unity] データを保存する(外部ファイルCSV)

どうも、tatsuです!

今回はデータを保存する方法の1つである、外部ファイルを使ってデータを保存する方法について説明しようと思います。

[Unity] データを保存する(PlayerPrefs)

2017.11.23

CSVとは?

知っている方も多いと思いますが、一応説明します。
CSVとは「Comma Separated Value」の略で、カンマで区切られた値という意味になります。

拡張子は「.csv」で、Microsoft Officeが入っている環境であればExcelが使用されて開くのが一般的かと思います。
だからといってExcelが無ければいけないというわけではありません。

元々異なるソフト間のデータ移動の際に使われている形式ですので、カンマで区切られていればcsvファイルとして扱うことができます。
例えば以下のようにメモ帳に書いたもので、拡張子を「.csv」で保存すればそれはcsvファイルとして扱われます。

あまり規模の大きくないゲームデータを保存するならCSVじゃなくてテキスト形式でもいいのですが、今後のことも考えて今回はCSVを使用してデータを保存する方法を説明します。

CSVを使ってデータを保存する

データを保存したり読み込んだりするには、C#スクリプトに以下のような記述をすればOKです。
必要に応じてファイル読込とファイル書出を使ってください。

今回はサンプルなのでStart関数内に書きましたが、実際のゲームではセーブボタンを押した場合にCSV保存するのがいいかと思います。

また、「using System.Text;」「using System.IO;」を忘れずに記述してくださいね。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Text;
using System.IO;

public class exportCsvScript : MonoBehaviour {

	// Use this for initialization
	void Start () {
		// ファイル書き出し
		// 現在のフォルダにsaveData.csvを出力する(決まった場所に出力したい場合は絶対パスを指定してください)
		// 引数説明:第1引数→ファイル出力先, 第2引数→ファイルに追記(true)or上書き(false), 第3引数→エンコード
		StreamWriter sw = new StreamWriter(@"saveData.csv",false, Encoding.GetEncoding("Shift_JIS"));
		// ヘッダー出力
  		string[] s1 = { "プレイヤー名", "記録" };
  		string s2 = string.Join(",", s1);
  		sw.WriteLine(s2);
		// データ出力
		for(int i = 0; i < 3; i++){
			string[] str = { "tatsu", ""+(i+1) };
			string str2 = string.Join(",", str);
  			sw.WriteLine(str2);
		}
		// StreamWriterを閉じる
 		sw.Close();


		// ファイル読み込み
		// 引数説明:第1引数→ファイル読込先, 第2引数→エンコード
		StreamReader sr = new StreamReader(@"saveData.csv",Encoding.GetEncoding("Shift_JIS"));
		string line;
		// 行がnullじゃない間(つまり次の行がある場合は)、処理をする
		while( (line = sr.ReadLine()) != null){
			// コンソールに出力
			Debug.Log(line);
		}
		// StreamReaderを閉じる
		sr.Close();
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

結果

さきほどのスクリプトをカメラ等にアタッチして実行すると、プロジェクトフォルダ直下に「saveData.csv」が出力されます。
ちなみに中身はこんな感じです。

まとめ

いかがでしたか?
今回はデータを保存する方法の1つである、CSVについて記事を書きました!
データを保存することでゲーム性は大幅に広がると思うのでぜひ使ってみてください!
それでは!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です