前幾天看到我們在游戲中需要動態加載某些角色的游戲策划值,關於這個問題怎么解決呢?其實辦法很多種,歸根到底,就是數據的讀取。我們可以想到的存儲數據的載體有很多。例如: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("|"[0]); foreach (var dat in data) { Debug.Log(dat); } ////讀取每一行的內容 string[] lineArray = binAsset.text.Split("\r"[0]); ////按‘|’進行拆分 string[] lineArray1 = binAsset.text.Split("|"[0]); //創建二維數組 string[][] Array = new string[lineArray.Length][]; //把csv中的數據儲存在二位數組中 for (int i = 0; i < lineArray.Length; i++) { Array[i] = lineArray[i].Split("\r"[0]); Debug.Log(Array[i][0].ToString()); } } }
運行結果:
OK 文本方式讀取就結束了。下面進行Excel的讀取。
需要插件: 稍后共享!

1 using UnityEngine; 2 using System.Collections; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Text.RegularExpressions; 8 using System.IO; 9 using Excel; 10 using System.Data; 11 using UnityEngine.UI; 12 13 public class NewBehaviourScript : MonoBehaviour 14 { 15 public Text readData; 16 void Start () 17 { 18 XLSX(); 19 } 20 21 void XLSX() 22 { 23 FileStream stream = File.Open(Application.dataPath + "/UserLevel.xlsx", FileMode.Open, FileAccess.Read); 24 IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 25 26 DataSet result = excelReader.AsDataSet(); 27 28 int columns = result.Tables[0].Columns.Count; 29 int rows = result.Tables[0].Rows.Count; 30 31 32 for(int i = 0; i< rows; i++) 33 { 34 for (int j = 0; j < columns; j++) 35 { 36 string nvalue = result.Tables[0].Rows[i][j].ToString(); 37 Debug.Log(nvalue); 38 if (i > 0) 39 { 40 readData.text += "\t\t" + nvalue; 41 } 42 else 43 { 44 readData.text +=" \t" + nvalue; 45 } 46 } 47 readData.text += "\n"; 48 } 49 } 50 51 }
搞定收工!
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