今天研究了一下Unity中解析Excel表格的操作。如果你是Windows下那么直接看这篇文章吧。
http://forum.unity3d.com/threads/57967-How-can-I-get-data-from-excel
这是一个老外写的,还有例子的下载地址。它基于ODBC来解析Excel表格,可是ODBC在MAC OS上是不支持的,为了在Mac OS 中也能解析Excel ,我想到了CSV。
Ok我来写一个简单的Excel表格,然后将它保存为csv格式。
csv会以逗号的间隔形式将数据分开。为了在Unity中使用,我们还需要修改一下它的文件格式为.txt。为了能显示中文还得修改一下文本的编码格式为UTF-8 或者 UTF-16 。在Mac上直接用Unitron 来修改编码格式吧。
好吧,下面我们来测试读取吧。 在Hierarchy视图中创建一个GUI Text对象,然后创建一条脚本给他挂上。
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour
{
void Start ()
{
TextAsset binAsset = Resources.Load("csv", typeof(TextAsset)) as TextAsset;
guiText.text = binAsset.text;
}
}
为了方便使用我把csv.txt放在了Resources文件夹下面,如果没有你需要创建一个。 TextAsset 就可以来读取二进制文件了,然后直接将读取的内容显示出来。csv将文本内容以分号的形式隔开。 其实我们可以将每个表组成一个二维数组,这样操作起来就非常方便。这时候我们需要安行类区分csv二进制的内容。 这里需要记住的是mac下换行符是”/r” 而windows下的换行符是”/n”using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour { void Start () { //读取csv二进制文件 TextAsset binAsset = Resources.Load ("csv", typeof(TextAsset)) as TextAsset; //显示在GUITexture中 guiText.text = binAsset.text; //读取每一行的内容 string [] lineArray = binAsset.text.Split ("\r"[0]); //创建二维数组 string [][]Array = new string [lineArray.Length][]; //把csv中的数据储存在二位数组中 for(int i =0;i < lineArray.Length; i++) { Array[i] = lineArray[i].Split (";" [0]); } //通过索引即可得到数据内容 Debug.Log(Array[2][1]); } }
如果你在程序中需要动态的读取这些数据,建议你在初始化中将csv的所有数据保存在一个全局的二维数组中。常驻内存中,当使用的时候只要调用这个二维数组即可。在PC iOS android 平台下已经测过没有问题 最后是本文的下载地址:http://vdisk.weibo.com/s/x49QE欢迎大家一起讨论学习,欢迎大家给我留言!加油,哇咔咔!!