csv文件很适合于程序和策划之间的配合,csv文件可以直接由Excel导出,策划在Excel中更改后导出csv,程序可以在不做任何修改的情况下做到更改游戏内容。
1.注意点
这个简单的文件读取类需要传入一个string初始化,可以直接用File.ReadAllText(文件路径),获取,如果是在Unity中并且放在Resources文件夹下的话,打包后这个文件夹就没了,直接传入文件路径无法获取,可以用
(Resources.Load(路径) as TextAsset).text;
2.CSVReader
代码很简单,使用方式和sql类似,ReadLine()读取一条数据,其他几种GetXXX方法用于获取特定数据
using System.Collections;
using System.Collections.Generic;
/// <summary>
/// CSV文件读取
/// </summary>
public class CSVReader
{
private int index;
private Dictionary<string, string> dic;
private string[] keys;
private string[] lines;
public CSVReader(string str)
{
index = 0;
dic = new Dictionary<string, string>();
// 注意这里不能用'\n'划分,用'\n'划分没行末尾依然会有一个回车符
lines = str.Split('\r');
keys = lines[0].Split(',');
for (int i = 0; i < keys.Length; i++)
{
dic.Add(keys[i], "");
}
}
public bool ReadLine()
{
index++;
if (index >= lines.Length)
return false;
string[] line = lines[index].Split(',');
for (int i = 0; i < keys.Length; i++)
{
dic[keys[i]] = line[i];
}
return true;
}
public string GetString(string name)
{
return dic[name];
}
public int GetInt32(string name)
{
return int.Parse(dic[name]);
}
public float GetFloat(string name)
{
return float.Parse(dic[name]);
}
public double GetDouble(string name)
{
return double.Parse(dic[name]);
}
public string[] GetStrArray(string name)
{
return dic[name].Split(':');
}
public int[] GetIntArray(string name)
{
string[] strs = dic[name].Split(':');
int[] array = new int[strs.Length];
for (int i = 0; i < strs.Length; i++)
{
array[i] = int.Parse(strs[i]);
}
return array;
}
}