Unity——读取Excel中的数据

       当涉及的数据很多且没有规律时,用代码一一写入,不仅耗时还很low。此时较好的方法就是讲数据写入Excel,然后获取表中的数据,简单又快,但unity不能直接导入读取Excel,需要借助第三方的库进行解析(需下载Excel.dll,ICSharpCode.SharpZipLib.dll,System.Data.dll),下载链接https://download.csdn.net/download/ro969668074/11125526,原本想上传分享给大家的,但莫名被设置成下载要积分了,没有积分或C币的朋友可以在网上找找。

        1.首先将现在好的解压到Asset的Plugins文件夹中,没有的话新建一个,如图

                                       Unity——读取Excel中的数据_第1张图片

提示:一般unity中自带System.Data,不需要放到添加System.Data,多个System.Data在打包的时候会报错。

        2.光添加是不够的,还需要在当前工程目录下添加引用。(1)随机选择该项目中的脚本,打开Visual Studio,找到“解决方案资源管理器”下的“引用”,右键,选择“添加引用”,如图

Unity——读取Excel中的数据_第2张图片

(2)弹出引用管理器框,如果没有在程序集中找到Excel,ICSharpCode.SharpZipLib,System.Data,就点击右下角的“浏览”,弹出“选择要引用的文件”;如果找到了,打√,通常情况下System.Data是找得到的。Unity——读取Excel中的数据_第3张图片

找到并选择Excel.dll和ICSharpCode.SharpZipLib.dll,点击添加,如图

Unity——读取Excel中的数据_第4张图片

最后点击确定,添加引用完成。

3.编辑Excel,下图是我的表

         Unity——读取Excel中的数据_第5张图片

4.创建脚本"ExcelTable",代码如下

//(1)添加引用
using UnityEngine;
using System.Collections;
using System.Data;
using System.IO;
using Excel;
using System.Collections.Generic;
 
namespace HotFixDll.ComingFish.ResourcesTool
{
    public class ExcelTable : MonoBehaviour
    {
        //(2)根据需要,定义自己的结构
        public struct TableData
        {
            public int fishkind;            //鱼的种类
            public int createtime;          //鱼的创建时间
        }
        //找到并读取Excel,转换成DataSet型变量
        DataSet ReadExcel(string path)
        {
            FileStream fs= File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
            IExcelDataReader iExcelDR = ExcelReaderFactory.CreateOpenXmlReader(fs);
            DataSet ds = iExcelDR.AsDataSet();
            return ds;
        }
        //加载记录表中信息
        public void LoadInfo(string path)
        {
 
            List data = new List();
            DataSet ds = ReadExcel(path);
            int columns = ds.Tables[0].Columns.Count;   //总列数,Tables[0]为待查询的表1
            int rows = ds.Tables[0].Rows.Count;         //总行数
            for (int i = 2; i < rows; i++)
            {
                TableData td = new TableData();
                td.fishkind = (int)ds.Tables[0].Rows[i][0];//ds.Tables[0].Rows[i][0]是Object,需强行转换为int型
                td.createtime = (int)ds.Tables[0].Rows[i][1];
                Debug.Log(td.fishkind + "  " + td.createtime);
                data.Add(td);
            }
        }
 
    }
}

5.创建另一脚本,负责添加和调用“ExcelTable”,并挂在“Fishs”对象上。

void Start()
        {
            GameObject.Find("Fishs").AddComponent().LoadInfo("Assets/fish.xlsx");
        }

6.运行输出

Unity——读取Excel中的数据_第6张图片

你可能感兴趣的:(Unity——读取Excel中的数据)