赞
踩
使用配表进行游戏数据配置,是一种很常见的操作。尤其是对于许多策划而言,他们会直接使用Excel表格配表,然后导出CSV文件,供我们使用。
CSV文件是一种文本格式,其中所有元素使用“,”隔开。
ID,Name,value_buy,value_sell
1001,浆果,1,5
1002,水稻,3,6
导出CSV文件可以先创建Excel文件,填好数据后选择左上角文件菜单->导出->更改文件类型->CSV(逗号分隔)(.csv)
之后在创建时,选择CSV UTF-8(逗号分隔)(.csv)格式。
注意,此处使用UTF-8的主要原因是表格中出现了中文。如果不存为UTF-8格式的CSV,会出现乱码(经典烫烫烫一类的)。建议使用UTF-8版本的CSV文件,对于后续可能出现的各种需求兼容性会好一些。
用记事本打开保存的文件,就可以看到上边出现的格式了。该格式将是我们读取的重要途径。
CSV文件是很好处理的一种文件格式,我们以两种方式来介绍。
我们在Unity中新建CSVReader的脚本。
我们在Asset文件夹下新建CSV文件夹,其中放入测试CSV文件,命名为TestCSV,后缀为.csv。
因为所有读入的CSV文件都是以字符串的形式存储,所以这里构建一个通用输出的方法,该方法会将一行的数据切割。
private void SplitString(string line)
{
string[] value = line.Split(",");
int id = int.Parse(value[0]);
string name = value[1];
int value_buy = int.Parse(value[0]);
int value_sell = int.Parse(value[0]);
Debug.Log($"ID为{id}的{name},售价为{value_buy},收购价为{value_sell}");
}
TextAsset可以读取很多文本文件,txt,csv等,在Inspector窗口公开,则可以直接拖入,以下为解析方式。
这里的加载可以是Recource.Load,AssetBundle,也可以测试的Application.dataPath。
private void CSVReadWithTextAsset()
{
// 资源加载方式
TextAsset ta = AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/CSV/TestCSV.csv");
string info = ta.text;
string[] lines = info.Split("\r");
for (int i = 1; i < lines.Length-1; i++)
{
SplitString(lines[i]);
}
}
File是IO的一种读取方式,作为文件,CSV文件自然也可以这样读入。
private void CSVReadWithFile()
{
string path = Application.dataPath + "/CSV/TestCSV.csv";
if (File.Exists(path))
{
string info = File.ReadAllText(path);
string[] lines = info.Split("\r");
for (int i = 1; i < lines.Length-1; i++)
{
SplitString(lines[i]);
}
}
}
其实两种读取方式都使用了同一个输出,因此效果相同。
没有讲到增删改,原因其实是,配置表程序员只有读的份,或者只读就好,其他都是策划的问题。如果表有问题,请留下证据然后找策划对线,他改完你再用。千万不要出现没经过策划同意便修改表的行为!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。