CSV形式のデータを生成・保存するプログラム。
ChatGPT-4で出力したコードに、少し改変を加えたものです。
コード
WriteToCSV .cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; // ChatGPT-4 2023/4/9 [System.Serializable] public class WriteToCSV : MonoBehaviour { private List<int[]> dataList = new List<int[]>(); // スコアデータを格納するリスト private string filePath = "Assets/Score.csv"; // CSVファイルのパス private int[] currentData; // 現在編集中のデータ private int lineNow = 0; // スコアデータを追加する public void AddScoreData() { dataList.Add(currentData); currentData = new int[currentData.Length]; // 新しい配列を生成して、currentDataを初期化する } // CSVファイルにデータを書き込む public void WriteDataToCSV() { // CSVファイルに書き込む StreamWriter writer = new StreamWriter(filePath, true); // trueを指定することで追記モードで開く for (int i = lineNow; i < dataList.Count; i++ ) { string line = string.Join(",", dataList[i]); // 配列をカンマで区切った文字列に変換する writer.WriteLine(line); lineNow++; } writer.Flush(); writer.Close(); } // 配列を指定の長さで初期化する public void InitializeData(int length) { currentData = new int[length]; } // 指定のインデックスにデータを設定する public void SetDataAt(int index, int data) { currentData[index] = data; } }
任意のゲームオブジェクトにコンポーネントとしてアタッチします。
使い方
●InitializeData()
で1行ごとの要素数を指定します。
●SetDataAt()
で値を設定し、AddScoreData()
で改行します。
●ファイルに書き出すときは WriteDataToCSV()
を呼びます。
// MonoBehaviour のため GetComponent などで取得 WriteToCSV csv = GetComponent<WriteToCSV>(); // 行数の初期化 csv.InitializeData(3); // 3つの要素からなる配列を初期化する // 1行目 csv.SetDataAt(0, 100); // 0番目の要素に100を設定する csv.SetDataAt(1, 1); // 1番目の要素に1を設定する csv.SetDataAt(2, 10); // 2番目の要素に10を設定する csv.AddScoreData(); // 1行目を確定する // 2行目 csv.SetDataAt(0, 200); csv.SetDataAt(1, 2); csv.SetDataAt(2, 20); csv.AddScoreData(); csv.WriteDataToCSV(); // スコアデータをCSVに書き込む
※補足
要素数は行ごとに変えられます。
AddScoreData()
で次行の要素数が決まるので、AddScoreData()
の前にInitializeData()
で要素数を再定義します。(すでに書き込み中の行の要素数は変更できないので注意)