数据编辑器是CocoStudio工具集中一个较轻量的工具,它的主要功能是将表格内容导出为Json格式,Jsons(JavaScript Object Notation)是一种轻量级的数据格式,易于阅读和编写,同时也易于机器解析和生成。被广泛应用于手机游戏开发中,如果你的项目中使用了javascript,那么这个数据格式就太适合你了!图(1- 01)中最右边就是数据编辑器
(图1- 01)
游戏开发过程中需要大量的数据,这些数据多数以Excel表格的形式提供,Excel是一个很强大的工具,无所不能,你甚至可以在Excel中编写代码,但是CocoStudio致力于让游戏开发变得更简单、更可视化,你不必在Excel中写繁琐的VB代码,只需要编辑好Excel表格数据,然后使用DataEditor倒出成Json即可。
例如游戏中的NPC系统,NPC的个数有若干个,每个NPC都有不同的属性,那么策划现在就需要配置一张包含所有NPC、和所有属性的表格,表格字段的设计方法有很多种,在这里我们先学习工具怎么使用。假设策划配置的NPC表格(data.xlsx)如下:

(1)打开数据编辑器,选择 文件->导入模板表->Excel 将这个文件导入到工具中,如下图:

(2)导入之后如下图
1) 数据表:显示所导入的数据文件名称
2) 结构树:显示当前数据文件所有分页和数据
3) 设置属性:显示一条数据的所有字段,Value部分可以双击改变数值
(3)在这里可以方便的查看、更改每一条的数据,确认无误后就可以进行倒出操作。选择 文件->导出Json文件 或者点击 按钮,弹出导出面板,如下图

1) 文件名:导出Json文件的名字
2) 路径:导出Json文件的路径
3) 批量导出设置:当前工作单是指数据表结构树中当前选择的文件,
全部工作单是指数据表结构树中所有文件
4)导出Json格式:用属性方式和对象方式分别导出上文中的data.xlsx,结果如下图:
(对象方式导出)

(属性方式导出)
对象方式是将每一条记录按照数组的方式组织,访问的时候用数组下标访问,个人不建议使用这种方式,Json格式推荐的是下面这种。
属性方式是以每一列的列名为key,行内容为Value,将每一条记录组织成Key/Value键值对,推荐使用这种方式,更符合Json的风格。
(4)在程序中使用:
初始化字典
unsigned long len = 0;
unsigned char* des = cocos2d::CCFileUtils::sharedFileUtils()->getFileData(“data_Property.json”, “r”, &len);
cs::CSJsonDictionary dict = new cs::CSJsonDictionary();
dict->initWithDescription((const char)des);
读取数据
cs::CSJsonDictionary* sub = dict->getSubObjectFromArrayByIndex(0);该方法还未释放,请等待11月19日版本。
std::string name = sub->getItemStringValue(“Name”);
int level = sub->getItemIntValue(“Level”, -1);
printf(“count : %d\n”, count);
教程所用数据文件: data.xlsx.zip (7 KB)
#以下内容是2013/11/25添加#
注意:因为读取对象模式的代码没有更新到引擎中,所以这里提供一下代码,以供使用者自行修改引擎。
在CSContentJsonDictionary.h
“
class CSJsonDictionary
{
public:
”后添加声明
DicItemType getItemTypeFromArray(const char *pszArrayKey, int nIndex);
在CSContentJsonDictionary.cpp 添加
DicItemType CSJsonDictionary::getItemTypeFromArray(const char *pszArrayKey, int nIndex)
{
CSJson::Value * arrayValue = validateArrayItem(pszArrayKey, nIndex);
if (arrayValue)
return (DicItemType)((*arrayValue).type());
return (DicItemType)CSJson::nullValue;
}




求指正 求指教 求调教!!!!**********