突然想结合Odin做一个解析CSV然后输出的工具,记录一下自己的想法,代码中的不足之处还希望大家指出
有关解析CSV的内容已经有很多了,这里我使用了Assets Store中的一个免费插件CSV Serialize,这里是插件的下载地址,这个插件比较简单,源码也是公开的,且只提供了反序列化CSV的函数。(有关csv这种格式的内容大家可以自行查找)
本文需要大家了解有关C#反射、特性、Linq方面的内容,不了解的大家可以看一下菜鸟教程-C#
1. 反序列化
我用Excel做了一张表格,然后把它另存为csv格式,采用了Odin的特性来获取文件夹的地址,至于反序列化的内容,有pdf文档,这里就不赘述了
[System.Serializable]
public class CSVClass : ScriptableObject
{
public class CSVSample
{
public int a;
public int b;
public string c;
public int d;
public int e;
public int f;
public int g;
public string[] h;
}
public CSVSample[] samples;
}
public class TestCSV : MonoBehaviour
{
[FilePath(RequireExistingPath = true)]
public string filePath;
void Start()
{
TextAsset data = AssetDatabase.LoadAssetAtPath<TextAsset>(filePath);
string assetfile = filePath.Replace(".csv", ".asset");
CSVClass cc = new CSVClass();
AssetDatabase.CreateAsset(cc, assetfile);
cc.samples = CSVSerializer.Deserialize<CSVClass.CSVSample>(data.text