位置: 编程技术 - 正文
推荐整理分享cocos2dx3.2开发 RPG《Flighting》(三)从Excel表中加载需要的数据(cocos2dx游戏开发),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:cocos2d开发app,cocos游戏开发教程,cocos开发游戏,cocos游戏开发教程,cocos开发游戏,cocos2dx游戏开发,cocos2d-js游戏开发,cocos2dx游戏开发,内容如对您有帮助,希望把文章链接给更多的朋友!
一、前言
在一个游戏里面,需要用到的数据一般都是由游戏策划提供的(这里的策划还是由我自己担任啦哈哈)。什么是需要用到的数据?例如我创建一个角色A,A有他自己的攻击力,防御力,速度等,再创建一个角色B,B也有自己的攻击力,防御力,速度等。每个角色都有一些基础属性,但是对应不同的角色,属性的有可能不同。我们不可能在代码里面把这些数据写死。最好的办法是从一个文件(通常是Excel表)中读入数据,这样就方便管理和修改。
二、正文
1.Excel
《Flighting》游戏里面用到了4个Excel表(在Resource的excel文件夹可以找到)。
HeroMessage:对应不同英雄的各个属性
MonsterMessage:对应不同怪物的各个属性
SkillMessage:对应不同技能的各个属性
StageMessage:对应不同关卡的各个属性
其中一个Excel表基本式如下图:
式很简单,基本上一看就知道怎么回事了。
2.下面我们以HeroMessage为例子进行接下来的操作。
我们已经做好我们需要的Excel表,现在我们的目标是将表的一条条的信息用一个个对象(bean)保存起来。
这里我也是同样采用了cocostuio提供的数据编辑器。大致的思路是这样的:先用cocostudio的数据编辑器将excel表转成一串JSON字符串。
再在代码里面读取并解析这串字符串,将数据信息用一个对象保存,方便管理。
第一步:数据编辑器的使用
打开cocostudio1.6 -》选择数据管理器-》文件-》导入模板表-》Excel
导入完之后
文件-》导出JSON文件-》确定
成功的话,会得到一个json文件,可以用记事本打开看看。
接下来我们作如下修改,字符串的上一行加入:
{”json“:
在字符串的下一行加入:
}
不清楚的话可以看图:修改前:
修改后:
懂json的人可能知道这是为什么,不懂也没关系,先照着做就好。
第二步:在代码中构造相应的信息保存类(bean)
HeroMessage.h
第三步:信息转换工具HeroMessageUtilHeroMessageUtil就是负责将Json文件读取并加载相应的信息。再用HeroMessage保存
可以看出,除了单例方法,构造函数和析构函数外,有三个函数和一个成员变量需要注意1. map<int,HeroMessage> heroMsgMap; 这是一个map,键是英雄的唯一id,是对应的信息对象
2. HeroMessage getMessageById(int id); 通过一个英雄的id,获取其全部信息map<int,HeroMessage> getHeroMessageMap();获取英雄信息map
3. void initHeroMsgMap();初始化英雄信息类,在构造函数中会调用
因此,我们重点关注void initHeroMsgMap()
这里我们用到的是rapidJson这个api,cocos2dx的附加库里面已经有的。所以我们只需要引入以下两个头文件就好
读取"Json/HeroMessage.json"这个文件,并将这个文件转成一串string
_mDoc是一个Document对象,可以先暂时理解为一个容器
将从json文件读取的那串字符串转成一个Document对象
读取_mDoc对应的那个json对象中,键为”json“的那个,保存的pArr对象中(还记得刚刚对json文件的修改吗,现在得到的pArr对象其实才是真正包含重要数据的)
接下来的for循环就是用来遍历一行一行数据的。(pArr.Capacity可以获取pArr对象中又包含了多少个对象)
最后构造好HeroMessage对象之后,记得把它放到map里面
这样我们将excel表里面一行行的数据放到了一个map里面了。
最后贴上HeroMessageUtil两个常用的方法:
本节结束。
我的csdn地址:
cocos2dx3.2开发 RPG《Flighting》(四)预先加载与选人界面 一、前言假设你已经看懂了前面三节,那么接下来我们就开始进入真正的开发啦~~二、正文1、预先加载首先我们先谈谈预先加载,什么叫预先加载,就
cocos2dx3.2开发 RPG《Flighting》(五)只能行走的战斗场景 一、前言前面几节好像与我们一开始说的游戏不太相关,现在我们正式进入战斗场景的开发。不过凡事不要心急,要循序渐进,我们先搭建一个能够让
【cocos2d-x】 EventListenerTouchAllAtOnce在IOS不可用的问题 第一次使用多点触摸,在ios真机上出现问题,而在android上跑却没问题,找了很久,问了很多人(竟然很多人不知道)...原因是在iOS中,苹果默认屏蔽掉
标签: cocos2dx游戏开发
本文链接地址:https://www.jiuchutong.com/biancheng/372654.html 转载请保留说明!上一篇:Cocos2dx ParticleEditor粒子编辑器
下一篇:cocos2dx3.2开发 RPG《Flighting》(四)预先加载与选人界面(cocos2d开发的知名游戏)
友情链接: 武汉网站建设