准备工作

在Project里面添加三个文件夹,第一个存放工具脚本,第二个存放读取数据的存储文件(这里我采用把数据存放在Excels表格里面),第三个存放生成的数据
下面是三个脚本


using System.Collections;
using System.Collections.Generic;
using System.Data;
using Excel;
using System.IO;
using UnityEngine;
using DataMsg;
using UnityEditor;public class ExcelTurner
{public class ExcelConfig{/// <summary>/// 存放excel表文件夹的的路径,本例xecel表放在了"Assets/Excels/"当中/// </summary>public static readonly string excelsFolderPath = Application.dataPath + "/Excels/";/// <summary>/// 存放Excel转化CS文件的文件夹路径/// </summary>public static readonly string assetPath = "Assets/Resources/";}public class ExcelTool{/// <summary>/// 读取表数据,生成对应的数组/// </summary>/// <param name="filePath">excel文件全路径</param>/// <returns>Item数组</returns>public static Item[] CreateItemArrayWithExcel(string filePath){//获得表数据int columnNum = 0, rowNum = 0;DataRowCollection collect = ReadExcel(filePath, ref columnNum, ref rowNum);Debug.Log(rowNum);//根据excel的定义,第二行开始才是数据Item[] array = new Item[rowNum];for (int i = 0; i < rowNum; i++){Item item = new Item();//解析每列的数据item.Id = collect[i][0].ToString();array[i] = item;}return array;}/// <summary>/// 读取excel文件内容/// </summary>/// <param name="filePath">文件路径</param>/// <param name="columnNum">行数</param>/// <param name="rowNum">列数</param>/// <returns></returns>static DataRowCollection ReadExcel(string filePath, ref int columnNum, ref int rowNum){FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);DataSet result = excelReader.AsDataSet();//Tables[0] 下标0表示excel文件中第一张表的数据columnNum = result.Tables[0].Columns.Count;rowNum = result.Tables[0].Rows.Count;return result.Tables[0].Rows;}}//这个方法在Android打包的时候,得注释掉,不然会打包失败public class ExcelBuild : Editor{[MenuItem("AssetTool/CreateItemAsset")]public static void CreateItemAsset(){ItemManager manager = ScriptableObject.CreateInstance<ItemManager>();//确保文件夹存在if (!Directory.Exists(ExcelConfig.assetPath)){Debug.Log("生成路径");Directory.CreateDirectory(ExcelConfig.assetPath);}else{DirectoryInfo di = new DirectoryInfo(ExcelConfig.excelsFolderPath);if (di.GetFiles().Length > 0){//赋值manager.dataArray = ExcelTool.CreateItemArrayWithExcel(ExcelConfig.excelsFolderPath + di.GetFiles()[0].Name);Debug.Log(manager);//asset文件的路径 要以"Assets/..."开始,否则CreateAsset会报错string assetPath = string.Format("{0}{1}.asset", ExcelConfig.assetPath, "Item");//生成一个Asset文件AssetDatabase.CreateAsset(manager, assetPath);AssetDatabase.SaveAssets();AssetDatabase.Refresh();}}}}
}
using UnityEngine;namespace DataMsg
{//这里根据自己的表结构来[System.Serializable]public class Item{public string Id;}
}
using UnityEngine;
using UnityEditor;namespace DataMsg
{[System.Serializable]public class ItemManager : ScriptableObject{public Item[] dataArray;}
}

在第一个脚本里面的最后一个方法放开注释后在导航栏有这样一个选项

点击这个选项里面有一个CreatItmAsset选项,如果没有Resources这个文件夹,点击第一次的时候,会创建这个文件夹,再点一次才会生成数据

生成的数据都存放在DataArray里面,在你需要读取的地方使用foreach读取就好了(foreach是只读的,不能边读取边修改数据。如果想进行边读取边修改的操作,使用for循环)

 ItemManager manager = Resources.Load<ItemManager>("Item");foreach (Item i in manager.dataArray){if (i.Id.Contains("比较数据")){   Debug.Log("对比成功");}else{   Debug.Log("对比失败");}
}

unity 多个数据存储和读取工具相关推荐

  1. Labview数据存储与读取——TDMS文件的创建与写入

    Labview数据存储与读取--TDMS文件的创建与写入 你好,这是我在自学Labview编写软件过程中使用的一些功能.我在存储采集卡数据时,通过阅读大量他人的程序,发现TDM及TDMS文件十分适合波 ...

  2. Android数据存储和读取的三种方法

    Android数据存储和读取的三种方法 一.文件存储 二.Context存储 三.SharedPreferences存储 一.文件存储 1.利用文件进行数据的存储 public static bool ...

  3. python读二进制格点雷达基数据_对numpy中二进制格式的数据存储与读取方法详解...

    使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制.查看使用说明,说明专门提到了是未经压缩的二进制形式.存储后的数据可以进行加载或者读取,通过使用load方法. In [81]:np. ...

  4. Arduino EEPROM对结构体数据存储和读取

    Arduino EEPROM对结构体数据存储和读取 以Arduino UNO开发板为例. 注意:该示例不适用于在ESP8266上使用 EEPROM.put()或者 EEPROM.get()来对数据读写 ...

  5. LabVIEW存储数据笔记——数据存储与读取

    LabVIEW存储数据笔记 --数据存储与读取 一.基础控件 图1 右击程序面板 图2 (a)写数据:(b)读数据 二.写入数据 1.基础配置 图3 写数据引脚 'file(use dialog)': ...

  6. Unity学习 — Unity与LeanCloud数据存储

    Unity 使用LeanCloud存取数据 一:LeanCloud 介绍 二:LeanCloud 特点 1:数据存储,替代传统数据库的高效云端存储 2:云引擎+云缓存 3:即时通讯 4:游戏解决方案 ...

  7. R语言与数据分析——【笔记】2.R语言数据存储与读取

    R语言通过工作目录来对文件读取和写入,若一个文件不在工作目录,则必须给出其路径 可使用命令getwd()(获得工作目录)来找到目录:使用命令setwd("F:/2glkx")将当前 ...

  8. Unity 数据存储与读取_JSON

    JSON简介 1. JSON 是纯文本 2. JSON 是一种轻量级的数据交换格式 3. JSON 具有层级结构(值中存在值) 1. 数据在键值对 2. 数据由逗号分隔 3. 花括号保存对象 4. 方 ...

  9. python 并行计算库_Python 大规模数据存储与读取、并行计算:Dask库简述

    本文转自:https://blog.csdn.net/sinat_26917383/article/details/78044437 数据结构与pandas非常相似,比较容易理解. 原文文档:http ...

最新文章

  1. UBUNTU安装SSH和xrdp
  2. Google创始人公开信:AI暖春和黑暗面
  3. 2020牛客多校第三场[C Operation Love+基础计算几何 判断多边形顺逆时针]
  4. 服务器传感器不显示,服务器传感器不显示
  5. arcengine坐标转换[转]
  6. Selenium java环境搭建
  7. 历时7周,当然了真正的安装时间没这么多,终于把集群安装好了
  8. .bat是什么语言_简单说说当我们打开网页时,浏览器到底做了什么?
  9. android view退出动画,android animation——view进来退出动画
  10. Mybatis(5)自定义Mybatis分析以及自定义实现
  11. vue 页面引入多个内部js_.html多页页面引入vue.js怎么开发?
  12. 超准!生活中48条让人匪夷所思的诡秘心理...
  13. html5华迪,比亚迪永通华迪4S店:元新能源最低售8.19万
  14. 利用WPS的Excel制作项目进度表
  15. 小白从零开发鸿蒙小游戏(1)“数字华容道”—【深鸿会学习小组学习心得及笔记】
  16. java 整理快捷键_idea快捷键整理
  17. 【FTP】错误描述:200 Switching to ASCII mode,227 Entering Passive Mode
  18. html英文颜色大全,html英文颜色名称全集
  19. There appears to be a gap in the edit log. We expected txid 1, but got txid 16
  20. 【自学python爬虫】:入门书籍推荐(附资源)

热门文章

  1. PTA 7-97 计算个人所得税
  2. rsync 增量传输大文件优化
  3. vue 多行文字滚动 停顿
  4. iPhone12Pro 什么时候上市 iPhone12Pro外观尺寸爆光
  5. Flutter 网页加载不出来
  6. 【干货】手把手教程!如何安装官方纯净版window11操作系统
  7. css居中的实现方法(包括水平居中和垂直居中)
  8. Java实现N*N矩阵旋转(360度)
  9. 计算机毕业设计(附源码)python智能交通信息管理平台
  10. Window10 RTX2070显卡+tensorflow_gpu1.14+cuda10.0+cudnn+7.4.2的环境配置