using UnityEngine; using System.IO; using System.Text; using System; namespace WildAttack { /// /// CSV读表工具类 /// public class CSVUtils : Singleton { public static string GetStreamingAssetPath() { string path = #if UNITY_ANDROID && !UNITY_EDITOR Application.streamingAssetsPath; #elif UNITY_IPHONE && !UNITY_EDITOR "file://" + Application.streamingAssetsPath; #elif UNITY_STANDALONE_WIN || UNITY_EDITOR "file://" + Application.streamingAssetsPath; #else string.Empty; #endif // 对路径进行 URL 编码 path = Uri.EscapeUriString(path); //Debug.Log("读取文件路径:"+ path); return path; } #region Members //利用二维数组存储对应行和列中的字符串 public string[][] m_ArrayData; #endregion #region Functions public string[] LoadFile(string path, string fileName) { //读取新文件前保证之前的数据为空 m_ArrayData = new string[0][]; string fillPath = path + "/" + fileName; //解析每一行的数据 string[] lineArray; try { //注意编码方式,这里用的是Windows系统自定义的编码方式Encoding.Default,其实也就是GB2312(简体中文),编码不对应的话解析出来很可能是乱码 lineArray = File.ReadAllLines(fillPath, Encoding.GetEncoding("utf-8")); //Debug.Log("file finded!"); } catch { //Debug.Log("file not find!"); return null; } return lineArray; } // 下面两个API改协程实现 pc可直接调用 android端用协程 //public void SaveData(string[] lineArr) //{ // m_ArrayData = new string[lineArr.Length][]; // for (int i = 0; i < lineArr.Length; i++) // { // //CSV格式的文件采用英文逗号作为分隔符 // m_ArrayData[i] = lineArr[i].Split(','); // } //} //外部调用的取值接口,需要先LoadFile()后才能返回正确的数据 //public string GetVaule(int row, int col) //{ // return m_ArrayData[row][col]; //} #endregion } }