データのローカル保存方法【Unity】

この記事では、Unity上のデータをローカルにCSV形式で保存する方法を紹介します。

また、保存する際に、タイトルが被ってしまうと困るため、ファイル名に保存したときの日付と時間がファイル名に挿入される関数を作っていきます。

目次 Close

関数の作成

まず以下のように、saveFunction.csというファイルを作ります。

createScript

次に、以下のようなコードをsaveFunction.csの中に書いていきます。ここでは、CSVSaveという関数の中にデータと保存時のファイル名を引数として渡しています。

saveFunction.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System; // DateTimeを使うために必要
using System.IO; // CSV保存をするために必要
public class saveFunction : MonoBehaviour
{ void Start() {	// sampleDataを作って、CSVSaveの関数に引数として渡す var sampleData = "SampleText"; CSVSave(sampleData, "sampleFile"); }	// CSV形式で保存するための関数 private void CSVSave(string data, string fileName) { StreamWriter sw; FileInfo fi; DateTime now = DateTime.Now; fileName = fileName + now.Year.ToString() + "_" + now.Month.ToString() + "_" + now.Day.ToString() + "__" + now.Hour.ToString() + "_" + now.Minute.ToString() + "_" + now.Second.ToString(); fi = new FileInfo(Application.dataPath + "/" + fileName + ".csv"); sw = fi.AppendText(); sw.WriteLine(data); sw.Flush(); sw.Close(); Debug.Log("Save Completed"); }
}

最後に、Unityを実行して、sampleTextという文字列の入ったCSVデータが保存されているか確認しましょう。以下(写真①)のように実行を行い、Consoleに”Save Completed”と表示され(写真①)、かつAssetsの中に保存されていて(写真②)、sampleTextという文字列が格納されていれば(写真③)完璧です。

startFunction
写真①
confirmResult1
写真②
confirmResult2
写真③

これで以上です。

セーブポイントなどを作る時や、研究のデータ取得などにぜひご利用ください。

最後に

いかがだったでしょうか?

もしもこの記事を通して、研究や開発が少しでも前進したら嬉しいです。

この他にも、Twitterにて「データサイエンティスト / エンジニアに役立つ情報を発信中」です。ご興味があれば、ぜひフォローお待ちしております。