前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取。我们可以想到的存储数据的载体有很多。例如:txt,xml,csv,excel。甚至可以使用Sqlite,Mysql,Sqlserver等!这都不是问题!那么我们今天学习下CSV文件和Excel的读取。废话不多说了,开始了!

1.建个空的项目!

2 建议test.csv的文件并录入数据。

录入数据:

3,读取csv文件。

方法一:将CSV文件强制转换为txt格式,在Unity中使用TextAsset直接读取文本信息。

using UnityEngine;
using System.Collections;
using System.IO; public class read : MonoBehaviour
{
public TextAsset txtCSV;
public GUIText guitext;
void Start()
{
guitext.text = txtCSV.text;
print(txtCSV.text); }
}

运行结果:

第一种方式很简单,那么第二种方式读取,添加脚本 test.cs

using UnityEngine;
using System.Collections;
using System.IO; public class read : MonoBehaviour
{public GUIText guitext;
void Start()
{
readCSV();
}
/// <summary>
/// 读取CSV文件
/// </summary>
void readCSV()
{
//读取csv二进制文件
TextAsset binAsset = Resources.Load("csv", typeof(TextAsset)) as TextAsset;
//显示在GUITexture中
guitext.text = binAsset.text; string[] data = binAsset.text.Split("|"[]);
foreach (var dat in data)
{
Debug.Log(dat);
} ////读取每一行的内容
string[] lineArray = binAsset.text.Split("\r"[]);
////按‘|’进行拆分
string[] lineArray1 = binAsset.text.Split("|"[]); //创建二维数组
string[][] Array = new string[lineArray.Length][]; //把csv中的数据储存在二位数组中
for (int i = ; i < lineArray.Length; i++)
{
Array[i] = lineArray[i].Split("\r"[]);
Debug.Log(Array[i][].ToString()); }
}
}

运行结果:

OK 文本方式读取就结束了。下面进行Excel的读取。

需要插件: 稍后共享!

 using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using Excel;
using System.Data;
using UnityEngine.UI; public class NewBehaviourScript : MonoBehaviour
{
public Text readData;
void Start ()
{
XLSX();
} void XLSX()
{
FileStream stream = File.Open(Application.dataPath + "/UserLevel.xlsx", FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); DataSet result = excelReader.AsDataSet(); int columns = result.Tables[].Columns.Count;
int rows = result.Tables[].Rows.Count; for(int i = ; i< rows; i++)
{
for (int j = ; j < columns; j++)
{
string nvalue = result.Tables[].Rows[i][j].ToString();
Debug.Log(nvalue);
if (i > )
{
readData.text += "\t\t" + nvalue;
}
else
{
readData.text +=" \t" + nvalue;
}
}
readData.text += "\n";
}
} }

搞定收工!

PS:可以以数据集的形式存储读取到的二维表格,然后可直接以二维数组的形式获取各个元组的信息!

作为数据集进行存储

DataSet result = excelReader.AsDataSet();

取得数据集中第一张表格的行的数目
int rows = result.Tables[0].Rows.Count;

取得数据集中第一张表格的列的数目

int columns = result.Tables[0].Columns.Count;

直接对行列操作:

result.Tables[0].Rows[i][j].

百度网盘:http://pan.baidu.com/s/1kTGIGS3

Unity 读取CSV与Excel的更多相关文章

  1. C# 读取CSV和EXCEL文件示例

    我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...

  2. Pandas系列-读取csv/txt/excel/mysql数据

    本代码演示: pandas读取纯文本文件 读取csv文件 读取txt文件 pandas读取xlsx格式excel文件 pandas读取mysql数据表 import pandas as pd 1.读取 ...

  3. python读取csv,Excel,Txt,Yaml 文件

    1.数据 1.Csv login.csv文件: byhy,88888888 ReadCsv.py文件 import csv #导入csv包 class ReadCsv(): def csv(self) ...

  4. python读取csv、excel、mysql内容

    前提:导入扩展包 import pandas as pd import pymysql ①读取csv文件 fpath='/test.csv'ratings=pd.read_csv(fpath)prin ...

  5. asp.net读取CSV

    原文:asp.net读取CSV 用Excel导了两天数据,各种问题,折磨客户也折磨了自己,以前没发现的问题一下子都暴露出来了 特意收集两篇Excel跟CSV读取相关的两篇文章 asp.net读取exc ...

  6. Python 读取csv文件到excel

    朋友问我如何通过python把csv格式的文件另存为xls文件,自己想了想通过读取csv文件然后再保存到xls文件中即可,也许还有其他简单的方法,但这里也为了练习python语法及其他知识,所以采用了 ...

  7. 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法

    1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...

  8. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

  9. Unity读取Excel文件(附源代码)

    今天想弄个Unity读取Excel的功能的,发现网上有许多方法,采用其中一种方法:加入库文件 Excel.dll 和ICSharpCode.SharpZipLib.dll库文件,(还有System.D ...

随机推荐

  1. javascript将毫秒还原为可读时间格式

    <script type="text/javascript"> //随便设置一个时间 var otime = new Date("2015-11-11 20: ...

  2. Angular源代码学习笔记-原创

    时间:2014年12月15日 14:15:10 /** * @license AngularJS v1.3.0-beta.15 * (c) 2010-2014 Google, Inc. http:// ...

  3. 视图View

    视图UI层的HTML,JavaScript,Css等元素 asp.net mvc 框架支持惯例优先配置原则 视图路径:view/controller名/Action \view\home\index. ...

  4. mysqlbinlog详解

    mysqlbinlog用于处理二进制日志文件的实用工具详解mysqlbinlog从二进制日志读取语句的工具.在二进制日志文件中包含的执行过的语句的日志可用来帮助从崩溃中恢复. binlog日志打开方法 ...

  5. UIScrollView的属性

    属性 作用 CGPoint contentOffSet 监控目前滚动的位置 CGSize contentSize 滚动范围的大小 UIEdgeInsets contentInset 视图在scroll ...

  6. HDU 5904 - LCIS (BestCoder Round #87)

    HDU 5904 - LCIS [ DP ]    BestCoder Round #87 题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 分析: 状态转移方程式 ...

  7. SurfaceFlinger

    D:\linux\ubuntu\touch\libhybris\libhybris_0.1.0+git20130606+c5d897a.orig\libhybris-0.1.0+git20130606 ...

  8. Tornado web 框架

    Tornado web 框架 其实很简单.深度应用 一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像we ...

  9. Qt编程之UI与控件布局

    当然,大家都知道UI界面可以用Qt Designer在约束环境下设置编辑.ui文件,再将.ui文件转换成对应的ui_XXX.h文件,这头文件中的内容是:用C++语言实现真正的界面布局.uic -o & ...

  10. 【转】gcc warning: braces around scalar initializer (标量初始化的括号)

    原文网址:http://stackoverflow.com/questions/3462513/gcc-warning-braces-around-scalar-initializer I have ...