前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取。我们可以想到的存储数据的载体有很多。例如: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. python 安装 memcache

    方式一: python3 -m pip install python-memcached 方式二: pip3 install python-memcached 方式三: tar zxf python- ...

  2. Localdb Attach Problem

    在进行code first的迁移时,update-database后默认在App_data文件夹下会新建数据库,如果删除了在使用update-database命令会出现以下错误: Cannot att ...

  3. javascript-Blob文件对象

    一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob,继承了Blob的功能,并且扩展支持了用户计算机上的本 ...

  4. js的水仙花数的输出

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. 简单的批量读取外部insert文并插入DB

    package com.tongxiang.item.base.dao; import java.io.BufferedReader; import java.io.File; import java ...

  6. MYSQL常用简单语句

    使用SQL语法大写,增加可读性(小写部分就是自己数据库写的表/字段喽,具体你懂得...). 创建数据库:CREATE DATABASE mysql_db;删除数据库:DROP DATABASE mys ...

  7. mysql索引之组合索引

    多列索引又称组合索引,在mysql的查询操作中,我们经常会遇到多个搜索条件,如:$sql = "select * from article where content='ma4' and t ...

  8. sql 更新一列为行号

    update u_menu set issort=t1.rowId from (  --select * from  --(   select cmenu_id,ROW_NUMBER() over(O ...

  9. jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  10. iOS AVAudioPlayer 提示音

    NSString *urlPath = [[NSBundle mainBundle] pathForResource:@"" ofType:@""]; NSUR ...