不知到多少用户已经开始用触发器了,经过两个版本的完善,触发器也越来越实用了,2014 CocoaChina 春季开发者大会上 视频展示了开水哥8分钟完成 一个Flappy Bird看了那个演示估计很多人心花怒放了,终于可以节省时间泡妹子去了
但是触发器目前还仅仅是模拟器,需要搭配Cocos Studio场景编辑器才能使用,我们如何利用触发器发布游戏包呢?今天小编将带大家一探究竟。
正文走起~~ 注意: 以下工作环境为Cocos2d-x 3.0RC0(2.x方法相同,唯独创建的项目结构不同,省去添加库部分内容)CocoStudio 1.3.0.0Visual Studio 2010Windows系统
一、创建一个游戏项目
既然要做一个使用触发器的Cocos2d-x 项目,那第一步就要先创建一个Cocos2d-x 项目。关于项目创建部分现在很多参考资料,这里不做赘述。下面是我自己使用的创建脚本
D:\cocos2d-x\cocos2d-x-3.0rc0\tools\cocos2d-console\bin>cocos.pynew -p org.cocostudio.triggertest -l cpp -d ../../../projectsTriggerTest
由于现在触发器目前是使用C++做的,所以我们这里选择的语言使用的是CPP(c++)。 创建完成后我们就有一个Cocos2d-x 项目了,由于Cocos2d-x3.0RC0 版本创建的版本不会包含libCocoStudio的解析库,我们还需要添加libCocoStudio解析库。 点击解决方案管理器,右键菜单选择“添加”-》“现有项目”,选择以下三个项目:
\cocos2d\cocos\editor-support\cocostudio\proj.win32\libCocosStudio.vcxproj
\cocos2d\extensions\proj.win32\libExtensions.vcxproj
\cocos2d\cocos\ui\proj.win32\libGUI.vcxproj
以上三个项目的入口文件均在当前创建项目的文件夹下。

引入后还需要添加引用:
以及设置TriggerTest项目属性:然后, 我们TriggerTest项目属性(点击右键选择属性)中选择 “配置属性” => “C/C++” => “附加包含目录” 并编辑. 添加下面几行
(EngineRoot)cocos
(EngineRoot)extensions
(EngineRoot)cocos\editor-support\
(EngineRoot)cocos\editor-support\cocostudio 如果需要详细了解引入库部分,欢迎参考:http://www.cocoachina.com/bbs/read.php?tid=194668
二、拷贝CocoStudio模拟器代码
使用触发器搭建项目其实并不用我们做过多的改动,因为我们想要的东西和Cocos Studio的模拟器是十分类似的东西,而Cocos Studio的模拟器已经开源的。所以我们可以直接取来改一改。
模拟器的源码托管在https://github.com/chukong/CocoStudioConnector
注意:(在完成该教程后将会提供cocos2d-x3.0版本的win32模拟器,暂时可以从点此下载3.0RC0版本class文件夹: CocoStudioTriggerClasses.zip (10 KB) )
下载完成后,我们可以在下面文件夹内找到win32的工程:
CocoStudioConnector-master\platform\win32
我们需要的仅仅是这一个,ios和安卓的仅仅在此基本功能上添加了二维码扫描功能和服务器连接功能,自建就不再需要了~ 将CocoStudioConnector工程下的class文件夹替换掉我们自己创建的游戏项目的Class文件夹。在class文件夹中tinyxml是xml解析第三方库,trigger文件夹存放生成后的解析文件(注意,每次生成可能需要替换该文件,这个取决于你是否修改了触发器内容)。另外还有绘制碰撞区的ColliderRectDrawer类和解析数据的ReadJSHelper类。其中tinyxml和ReadJSHelper负责解析由编辑器传来的一些命令行参数,自建项目没用到可以删除。
若引入ReadJSHelper可能会报“Error:无法打开源文件”tinyxmml.h””异常,这个是由于我们将tinyxml单独放到一个筛选器里(累死于文件夹),所以要加路径“tinyxml/tinyxml.h” 添加完资源后只需要改动一行:
CCNode *pNode =cocos2d::extension::SceneReader::sharedSceneReader()->createNodeWithSceneFile(ReadJSHelper::Instance()->GetJsonPath().c_str());
替换为
CCNode *pNode =cocos2d::extension::SceneReader::sharedSceneReader()->createNodeWithSceneFile($场景的文件);
三、添加场景 此时这个工程已经创建完毕,我们拿来一个资源,这里就选择cocostudio场景编辑器自带的FightingScene场景作为游戏。

我们copy这个示例,为了看到效果,我们随意添加两个触发器。
关于触发器使用可以参考:http://www.cocoachina.com/bbs/read.php?tid=179215 修改完成后点击“确定”即可。
现在这个场景已经算编辑完成,下面可以将这个项目导出。菜单栏-》文件-》导出项目-》导出资源。导出后将当前编辑器项目文件夹下的:Resources文件夹的资源添加进游戏项目的Resources文件夹下。 注意:如果触发器里的条件不符合自己的条件,需要扩展的话,请参考:http://www.cocoachina.com/bbs/read.php?tid=194739。修改完成后点击“生成”按钮生成代码(就是生产Trigger文件夹下的5个文件)。每一次对触发器配置的调整都需要将该场景目录下的code文件下的5个文件替换掉游戏项目的class/trigger目录下的5个文件。
四、运行程序
直接编译,并运行,然后就可以看到我们自己的项目窗口已经实现了和编辑器完全相同的效果,所有注册的触发器也均可以实现。
后记:写完教程发现转换到3.0版本还需要自己改动很多东西,所以就直接提供3.0版本的模拟器了~大家就不用弄那么麻烦的自己敲代码了,基本会创建项目就能搞定上面的内容,注意选择版本即可。



强力!感谢分享!


