CSV是一种以逗号间隔的文本文件,经常把游戏中一些人物属性,武器数值存放在CSV文件中,这就需要我们在Unity中用代码将这个CSV文件中的数据读取出来放在一个数组中,在需要的地方获得这些数据。
如何创建CSV文件
- 通过创建txt文件,输入数据,以逗号分隔,注意逗号是英文输入法下的逗号,然后另存为**.csv文件,编码格式改为UTF-8,保存即可。
- 通过创建Excel文件,然后另存为**.csv文件,点击确定即可。
解析CSV文件
将weapon.csv文件拖到Resource文件夹下的Data文件夹下。在Unity中新建一个脚本,命名为ReadCSV.cs。
- 代码如下:
using UnityEngine; using System.Collections; public class ReadCsv : MonoBehaviour { //定义一个数组,存放表格数据 private string[][] _ArrayData; void Awake () { //拿到CSV文件 TextAsset data = Resources.Load("Data/weapon", typeof(TextAsset)) as TextAsset; //将表格中的数据按行分割存储 string[] lineArray = data.text.Split("\r"[0]); //初始化数组 _ArrayData = new string[lineArray.Length][]; //把CSV中的数据存储在数组中 for (int i = 0; i < lineArray.Length; i++) { _ArrayData[i] = lineArray[i].Split(','); } } public string GetDataByIDAndName(int id,string name) { if (_ArrayData.Length<=0) { return ""; } int nRow = _ArrayData.Length; int nCol = _ArrayData[0].Length; //每行ID前都有一个"\n",要转下格式 string strID = string.Format("\n{0}", id); //循环行,找到对应的ID for (int i = 0; i < nRow; i++) { //如果ID一致再循环列数据 if (_ArrayData[i][0]==strID) { for (int j = 0; j < nCol; j++) { if (_ArrayData[0][j]==name) { //返回指定行列对应的数据 return _ArrayData[i][j]; } } } } return ""; } }
然后就可以在其他的脚本中通过GetDataByIDAndName方法,得到指定的ID,name的数据了。
Comments