1、创建csv文件

既然做实验嘛,没有资源怎么行,自己徒手写个csv文件吧,打开Numbers工具,新建一个表格文件,我的文件编辑截图如下:

创建完成后,导出成csv格式,我这里文件名为test.csv;

2、改成txt格式

既然unity3d不认识csv,那么我们人工处理一下,很简单,像上一篇文章一样,简单粗暴的把csv的扩展名改成txt吧,谁让unity3d比较亲txt呢,更改后是test.txt,打开后是这个样子的:

3、读取txt文件

private string [][]Array;
void Start ()
{
//读取csv二进制文件
TextAsset binAsset = Resources.Load ("test", typeof(TextAsset)) as TextAsset; //读取每一行的内容
string [] lineArray = binAsset.text.Split ("\r"[]); //创建二维数组
Array = new string [lineArray.Length][]; //把csv中的数据储存在二位数组中
for(int i =;i < lineArray.Length; i++)
{
Array[i] = lineArray[i].Split (',');
}
}

先读取test文件,这里要注意,你要把test文件放到Asset的Resources目录下,没有这个目录就自己创建一个。因为每一行结尾都会有个“\r”,所以用这个可以分隔出每行数据,然后我们创建一个二维数组Array,行数用上一句求出的行数据,列数待定。因为每一行的数据都是用“,”分隔符分开的,所以我们用逗号分隔出每列数据,再以行为单位保存在Array中。现在你打印Array.Length应该是5,表示行数,Array[0].Length应该是3,表示列数。

4、以行列数读取数据

string GetDataByRowAndCol(int nRow, int nCol)
{
if (Array.Length <= || nRow >= Array.Length)
return "";
if (nCol >= Array[].Length)
return ""; return Array[nRow][nCol];
}

这个代码很简单,前面都是行列越界判断,没啥好说的,这时打印GetDataByRowAndCol(1,2)应该是“这是苹果”。

5、以Id和名称读取数据

这应该是项目最常用到的,以行列的名称定位数据。

string GetDataByIdAndName(int nId, string strName)
{
if (Array.Length <= )
return ""; int nRow = Array.Length;
int nCol = Array[].Length;
for (int i = ; i < nRow; ++i) {
string strId = string.Format("\n{0}", nId);
if (Array[i][] == strId) {
for (int j = ; j < nCol; ++j) {
if (Array[][j] == strName) {
return Array[i][j];
}
}
}
} return "";
}

上面代码也很简单,先循环行数据,判断ID是否相同,找到ID后再循环列数据,看名称是否相同,然后返回行列对应的数据。这里有一点值得注意,就是判断Id的时候,id前面会有个“\n”,这是换行标识符,你可以用Debug的方式看一下Array,除了第一行,每一行的Id都会有个“\n”的前缀,所以必须这么判断。这时打印GetDataByIdAndName(4,"name")应该是“梨”。

【Unity3D】Unity中用C#读取CSV文件的更多相关文章

  1. (转)Unity3D移动平台动态读取外部文件全解析

    Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一直有 ...

  2. 慕容小匹夫 Unity3D移动平台动态读取外部文件全解析

    Unity3D移动平台动态读取外部文件全解析   c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一 ...

  3. sparkR读取csv文件

    sparkR读取csv文件 The general method for creating SparkDataFrames from data sources is read.df. This met ...

  4. VB6.0 读取CSV文件

    最近做了一个Upload文件的需求,文件的格式为CSV,读取文件的方法整理了一下,如下: 1.先写了一个读取CSV文件的Function: '读取CSV文件 '假设传入的参数strFile=C:\Do ...

  5. php读取csv文件,在linux上出现中文读取不到的情况 解决方法

    今,php读取csv文件,在linux上出现中文读取不到的情况,google,后找到解决办法<?phpsetlocale(LC_ALL, 'zh_CN');$row = 1;$handle = ...

  6. 使用univocity-parsers创建和读取csv文件

    import com.univocity.parsers.csv.CsvFormat;import com.univocity.parsers.csv.CsvParser;import com.uni ...

  7. Python 读取csv文件到excel

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

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

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

  9. java读取CSV文件添加到sqlserver数据库

    在直接将CSV文件导入sqlserver数据库时出现了错误,原因还未找到,初步怀疑是数据中含有特殊字符.于是只能用代码导数据了. java读取CSV文件的代码如下: package experimen ...

随机推荐

  1. c++对象导出到lua

    转自:http://www.cnblogs.com/ringofthec/archive/2010/10/26/luabindobj.html 虽然有tolua++, luabind等等, 不过自己手 ...

  2. PHP7三元运算符 ?? 和 ?: 的区别

    1. (expr1) ?? (expr2)  是 PHP7才有的功能,等同于: isset(expr1) ? expr1 : expr2 ; 2.(expr1) ?: (expr2) 是PHP5.3才 ...

  3. shell入门-wc

    命令:wc 选项:-l  查看行数 -w  以空白字符为分隔符 查看有多少单词 -m  查看字符数,文件大小 说明:统计指定文件中的字节数.字数.行数. -l [root@wangshaojun 11 ...

  4. 杭电acm 1022题

    Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...

  5. centos7命令行和图形界面的相互切换(附centos7安装配置教程)

    一.最近安装了centos7,发现在命令行和图形界面的相互切换命令上,与centos以往版本有很大不同,先整理如下,加深记忆. 1,centos7默认安装后,跟其他版本一样,启动默认进入图形界面: 2 ...

  6. js判断IP字符串是否正确

    //判断ip地址的合法性 function checkIP(value){ var exp=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0 ...

  7. git中避免提交.DS_Store文件[转载]

    1. 先删除原有的.DS_Store: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch 命令解释:在当前文件夹 ...

  8. 超级台阶 (NYOJ—76)

    很简单的高中数学题,写出来主要是提醒自己,写完递推公式(尤其是公式)一定要检查多遍. #include<stdio.h> #include<string.h> int M; i ...

  9. Python-OpenCV中的图像模糊

    目录 1. 高斯模糊:cv2.GaussianBlur()   主要记录Python-OpenCV中的图像模糊操作: 1. 高斯模糊:cv2.GaussianBlur() def GaussianBl ...

  10. 洛谷P2052 道路修建

    P2052 道路修建 题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 ...