From c3bfbf2abaad91e79cde2e240f717138b1c30df7 Mon Sep 17 00:00:00 2001 From: swrring Date: Mon, 6 Nov 2023 20:43:53 +0900 Subject: [PATCH] =?UTF-8?q?CSVReader.cs=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/2_Codes/CSVReader.cs | 90 ++++++++++++++++++++++++++++++++ Assets/2_Codes/CSVReader.cs.meta | 11 ++++ 2 files changed, 101 insertions(+) create mode 100644 Assets/2_Codes/CSVReader.cs create mode 100644 Assets/2_Codes/CSVReader.cs.meta diff --git a/Assets/2_Codes/CSVReader.cs b/Assets/2_Codes/CSVReader.cs new file mode 100644 index 00000000..a00db7cd --- /dev/null +++ b/Assets/2_Codes/CSVReader.cs @@ -0,0 +1,90 @@ +using UnityEngine; +using System.Collections.Generic; +using System.IO; + +public static class CSVReader +{ + public static Dictionary> Read(string filePath) + { + Dictionary> dict = new Dictionary>(); + TextAsset textData = Resources.Load("CSV/" + filePath); + + using (StringReader reader = new StringReader(textData.text)) + { + string[] headers = reader.ReadLine().Split(','); + reader.ReadLine(); // Skip the second line with column descriptions + + int rowIndex = 0; + string line; + while ((line = reader.ReadLine()) != null) + { + string[] values = line.Split(','); + Dictionary entry = new Dictionary(); + + for (int i = 0; i < headers.Length; i++) + { + string key = headers[i]; + string prefix = key.Substring(0, 2); + + if (values.Length > i) + { + string value = values[i]; + + switch (prefix) + { + case "n_": + entry.Add(key, int.Parse(value)); + break; + case "l_": + entry.Add(key, System.Numerics.BigInteger.Parse(value)); + break; + case "f_": + entry.Add(key, float.Parse(value)); + break; + case "s_": + case "e_": + entry.Add(key, value); + break; + case "b_": + entry.Add(key, value == "1" ? true : false); + break; + default: + entry.Add(key, value); + break; + } + } + else + { + switch (prefix) + { + case "n_": + entry.Add(key, 0); + break; + case "l_": + entry.Add(key, System.Numerics.BigInteger.Zero); + break; + case "f_": + entry.Add(key, 0.0f); + break; + case "s_": + case "e_": + entry.Add(key, ""); + break; + case "b_": + entry.Add(key, false); + break; + default: + entry.Add(key, ""); + break; + } + } + } + + dict.Add(rowIndex, entry); + rowIndex++; + } + } + + return dict; + } +} diff --git a/Assets/2_Codes/CSVReader.cs.meta b/Assets/2_Codes/CSVReader.cs.meta new file mode 100644 index 00000000..49291b04 --- /dev/null +++ b/Assets/2_Codes/CSVReader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ad5e21c7776cd94aa69632a4ea49e37 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: