Unity系列研究

Unity-解析CSV表格之TableAnalystd的使用

TableAnalystd是berry花了些时间编写的一套解析数据表格的工具类,我们在团队开发中少不了使用数据表,而CSV是我们最常用的格式。单纯的CSV表格解析起来十分简单,直接按逗号分隔就可以了。但往往为了降低表数据冗余,需要在单个单元格中添加多个数据,这时普通的解析方式就无法满足需求了。

这里我们就需要一个强大的表格解析器,这也是berry编写TableAnalystd的目的。

TableAnalystd有一些的特性

1.使用方便,一句话解析

2.支持复杂的表结构

3.使用策略模式设计,可以拓展其他格式的数据表解析

接下来直接来看看TableAnalystd的用法

导入TableAnalystd的文件至Unity的工程目录,然后打开AnalytdConfig配置文件

里面包含以下几个标签

1)Debug 表示是否开启调试模式,开启后可以在Debug输出中看见表格的解析过程,当表格数据格式出错时可以查看日志快速找到错误数据。

2)Content 表示表格所在的目录,默认表格存放的根目录在Unity工程目录Assets的StreamingAssets目录下。

3)TableAnalytd这个标签表示所有的表格解析器,其下的Analytd标签表示一个表格解析器,这里可以添加一组自定义的表格解析器(如,xlsx,xml等),关于TableAnalystd的设计和拓展berry会在考虑在后续文章中介绍。

向tables目录下添加一张表格

接下来我们试着解析这张表格

TableAnalystd的解析结果为数据对象,TableAnalystd支持的数据如下(CSV表格中的单格数据)

1)基本数据类型(如,int、float、string,Boolean等)

2)对象数据类型,类似与Java的bean对象,填写方式为中括号包裹的一组基本类型数据,如,[1,'a',true]

3)List数据类型,List的数据项可以为基本数据类型、对象数据类型和List数据类型,数据类型可以相互嵌套,如,[1,[[2,'b'],[3,'c'],[4,'d']],"hello"]

接下来建立上表的数据对象类

public class BlockInfo {
    public string blockID;
    public string blockName;
    public string blockdesc;
    public string blockType;
    public float hardness;
    public BlockOutput output;
    public float LTV;
    public string textureURL;
}
public class BlockOutput {
    public string ItemID;
    public int num;
    public float rate;
}

需要注意的是数据对象的名字要与表格的名字一致,接下的解析就很简单了,如下编写即可

public class TableTest : MonoBehaviour {
   
    void Start () {

        List<BlockInfo> infos = TableFileReader.Instance.LoadToBean<BlockInfo>(typeof(BlockInfo));

        foreach (BlockInfo info in infos) {
            Debug.Log(info.blockID + "-" + info.blockName + "-" + info.blockdesc + "-" + info.blockType + "-" +
                info.hardness + "-" + info.LTV + "-" + info.textureURL);
            Debug.Log(info.output.ItemID+"-"+info.output.num+"-"+info.output.rate);
        }

    }

}

使用TableFileReader的LoadToBean方法即可完成解析表格,整个的解析过程由TableFileReader自动识别的解析器自行完成。下面是解析结果

在AnalytdConfig中开启Debug模式后,可以看到详细的解析过程

TableAnalystd的使用就介绍到这里了,这里Berry要提醒一下大家,目前TableAnalystd可能不兼容移动平台,因为TableAnalystd使用了c#的File加载文件,很可能在Android等移动平台不适用,这些问题Berry会在后续版本中解决,最后附上TableAnalystd的下载地址TableReader.unitypackage

(4)

本文由 树莓屋 作者:Berry贝锐 发表,转载请注明来源!

关键词:,

热评文章

发表评论