unity3d学习笔记(十七)--unity3d读取csv文件
来源:互联网 发布:cf辅助瞄准软件 编辑:程序博客网 时间:2024/05/21 17:13
本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢。
http://blog.csdn.net/lzhq1982/article/details/12968309
在mac os下写过手游程序的应该都清楚csv文件,它类似于excel表格文件,但csv文件里的数据是以逗号分隔的。unity3d并未提供直接读取csv文件的方法,那怎么办呢,没关系,很简单,下面看我是怎么做到的。先声明,我的操作系统是mac os。
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"[0]); //创建二维数组Array = new string [lineArray.Length][];//把csv中的数据储存在二位数组中for(int i =0;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 <= 0 || nRow >= Array.Length)return "";if (nCol >= Array[0].Length)return "";return Array[nRow][nCol];}这个代码很简单,前面都是行列越界判断,没啥好说的,这时打印GetDataByRowAndCol(1,2)应该是“这是苹果”。
5、以Id和名称读取数据
这应该是项目最常用到的,以行列的名称定位数据。
string GetDataByIdAndName(int nId, string strName){if (Array.Length <= 0)return "";int nRow = Array.Length;int nCol = Array[0].Length;for (int i = 1; i < nRow; ++i) {string strId = string.Format("\n{0}", nId);if (Array[i][0] == strId) {for (int j = 0; j < nCol; ++j) {if (Array[0][j] == strName) {return Array[i][j];}}}}return "";}上面代码也很简单,先循环行数据,判断ID是否相同,找到ID后再循环列数据,看名称是否相同,然后返回行列对应的数据。这里有一点值得注意,就是判断Id的时候,id前面会有个“\n”,这是换行标识符,你可以用Debug的方式看一下Array,除了第一行,每一行的Id都会有个“\n”的前缀,所以必须这么判断。这时打印GetDataByIdAndName(4,"name")应该是“梨”。
就这些,有问题欢迎提问,哈哈。
- unity3d学习笔记(十七)--unity3d读取csv文件
- unity3d学习笔记(十七)--unity3d读取csv文件
- unity3d读取csv文件
- Unity3d读取.csv文件
- unity3d读取csv文件
- Unity3D 异步读取CSV文件
- 【Unity3d】学习笔记(11)——处理CSV文件
- unity3d学习笔记(十六)--unity3d读取plist或xml文件
- unity3d学习笔记(十六)--unity3d读取plist或xml文件
- unity3d学习笔记(十六)--unity3d读取plist或xml文件
- Unity3D学习笔记(十七)自定义鼠标形状
- Unity3D读取文件
- Unity3D文件读取
- Unity3D 学习笔记(一)
- unity3d 学习笔记(一)
- unity3d 学习笔记(二)
- unity3d 学习笔记(三)
- Unity3D 学习笔记 (1)
- 【Android】Eclipse报This version of the rendering library is more recent than your version of ADT ...
- JSON工具类
- 根据身份证号码更新生日日期存储过程
- 具有system权限的进程无法访问sdcard
- 最近研究wince,在其下面读取json
- unity3d学习笔记(十七)--unity3d读取csv文件
- c# 控制textbox 只允许输入 数字 0~9
- CreateFile打开U盘的方法2-逻辑方式
- 【android基础篇之一】Android应用程序目录结构
- direct path read temp
- ubuntu上SVN版本升级到1.7
- SDUTOJ 1299 最长上升子序列
- Oracle DB对数据进行限制和排序
- java cmd编译后运行是区分大小写的