CSV格式即为只用逗号分隔数据的文本格式
例如我们提供一个文本:
11,12,,,,,,, *,*,*,*,* *,*,c,*,* *,0,0,0,* *,*,*,*,*
private void LoadFromAsset(TextAsset asset) { //TextAsset 继承于UnityEngine.Object,可以存储文本信息 m_mapData.offset_x = MAP_ORIGIN_X; m_mapData.offset_z = MAP_ORIGIN_Z; if (asset != null) { string txtMapData = asset.text; // 将空元素删除的选项 System.StringSplitOptions option = System.StringSplitOptions.RemoveEmptyEntries; // 用换行符将每行切割开,并存入数组 string[] lines = txtMapData.Split(new char[] {'\r','\n'},option); //string.split是c#的方法,用接受的字符或字符数组,对目标进行分割。这里是把换行符和回车符当做分隔符 //因为可能会割出空元素所以需要额外的option删除空元素 // 用“,”将每个字符分割开 char[] spliter = new char[1] {','}; // 处理输入数据的第一行 //再用一次split用逗号做分隔符切割目标字符串 string[] sizewh = lines[0].Split(spliter,option); //int.parse, c#的只能类型转换 m_mapData.width = int.Parse(sizewh[0]); m_mapData.length = int.Parse(sizewh[1]); char[,] mapdata = new char[m_mapData.length,m_mapData.width]; for(int lineCnt = 0;lineCnt < m_mapData.length;lineCnt++) { // 为了保证文本文件中即使指定了特别大的值也不会出问题 // 进行检测 if (lines.Length <= lineCnt+1) break; // 用“,”将每个字符分割开 string[] data = lines[m_mapData.length-lineCnt].Split(spliter,option); for (int col = 0; col < m_mapData.width; col++) { if (data.Length <= col) break; mapdata[lineCnt,col] = data[col][0]; } } m_mapData.data = mapdata; } else { Debug.LogWarning("Map data asset is null"); } }