CocoStudio samples讲解——DemoGameScene RPG游戏场景

CocoStudio sample——DemoGameScene讲解 tdp=iDT   @ 4{YTQe\   本教程所使用Samples下载地址:https://github.com/chukong/CocoStudioSamples VTP_E/8gI   N7Zz_:i   一、    目标 0t$*gW o   :Jz/tJCu+   本节讲解的主要目标是学习使用场景编辑器制作一个游戏场景、并在游戏中显示。 &4kVD``\   效果如下图: f!18s' Qx   M$4"V]4   6z{2XL&'   NYK/9   Z|?q)-TN\2   ~j'`l   二、    创建项目 b7+28   RzRHz=?^;*   打开CocoStudio,进入启动器页面,选择第三个——“场景编辑器”。 f2^ hh   &7PJpkM   av` WC   在菜单栏中选择“文件”—》“创建新项目”(快捷键:Ctrl+N) Aiu)z2}r#   &D -:.92Mr   H|t!E|   输入项目的名称并设置项目的存放路径 9>cvm*u   PG)tIR-   三、    导入资源文件 pz\.7zv`   a|BO#d^G   开始制作之前,第一步是添加所需要用的资源。 u*i a [E   添加资源有两种主要方式,一种是直接将资源拖放到资源版本内,另一种是使用导入。 2!`glO-\>   m'jsy@   -Cb (>Oavp   l$ ZK[r>   b$,@Ne   四、    场景的组件 ,hpq^A*^   PX @3W/   下图中是场景编辑器所有的组件类型: R@gy+j06   np{'8LI(   q :1>\t   ~"ke]g!I[   7Vz^ShK   精灵主要用来显示静态图片,骨骼组件用来显示动画(动画编辑器导出文件)。UI组件用来展示UI界面(UI编辑器导出文件),地图用来显示瓦片地图(.tmx格式),粒子组件是用于挂载粒子的(.Plist格式),音效用户播放声音。 % 5Dw _6   dCg*0;]:5       本节所做的内容较为简单,一共用到了两种组件:精灵和粒子。整个节目中除了太阳是用粒子做出来的特效外,其余内容都是用精灵来制作的。 M).Fo[>&\   .TSPT~s        Kl4ksN#.   '~ oZ        <`ZQtJJb   =,Zg!KfOm   五、    组合场景 |N2>#i]>wK   o(j0 ?KV-   制作开始之前,要先调整画布大小。这里设置为1024*768。 x9tLRHryNd   tv\$i->}Pp   0{u C.s   y+9peXZ?D.   制作场景时,按照由下到上的顺序制作。首先我们从左侧组件列表拉一个精灵到渲染区,保持改精灵的选中状态。从“资源”面板选择envir文件夹下的Background.png,并拖拽至属性面板中的“文件”属性栏中。此时,可以看到整个画布已被背景所覆盖。 XA3 nU^P~n   接下来是画布中的一些修饰物品,包括石头、水晶等。这些物品的下方还都有一个阴影图、或者草地。如下图中,一个石头堆下还有一块草地。 O0qHT&rk   通常为了保持层级关系,会先托放底部的草地层,然后再 拖动草地上的物品。 a4QJPy.   r{,th^7g   v=D[gkgS   d.e~_9Gqf   由于背景中草地部分用的是45度菱形小格,所以所有作为阴影或者草地的图层都制作为菱形。 %4kpJ!   K @s6Y6   接下来将剩余的一些物品使用相同方法放到渲染区内。 [ 5o"iK   __14<    A~P=mBXg}   @vDj.0   接下来还有一个粒子特效,这里需要中组件列表里选择一个粒子组件拖动到渲染区,并在资源面板中找到粒子文件拖动到“粒子”属性里。点击播放查看粒子的效果。 a` &48xn#   b&l_GYf?   !cm*   jhOrp+   Pis:粒子文件是一种.Plist格式的文件,通常由专业的粒子编辑器制作而成,导出后分为两种,一种是plist+png文件,另一种只有一个plist。由于plist的格式并非粒子专用格式,所以在添加粒子文件的时候一定要确保该plist是粒子特效文件而非其他数据。 nD'&V^K(   q9zKXe}*/   F: %B3 _c   '}WW;5Y   kw0bcqi}J   %~PQ@L0Y   六、    导出项目 KR}8:h   &&2S~r;   在菜单栏中选择“文件”—》“导出项目”—》“导出资源” i nh@ +   y?bwX*\   #Jq<,eF[   场景编辑器里的导出设置较为简单,名称使用默认即可,导出位置可以选择当前项目内或游戏工程的目录。“格式化输出”这个是为了优化导出数据的。 &3.#_l5^o   p WPJ\F<K   七、    引入游戏 Hh$'iX fhW   }C5B2+D   本节的代码部分也较为简单,主要的内容为将场景导出的json数据解析成场景界面。 )sPb@wA   我们使用python脚本创建一个新的cocos2d-x项目,项目默认会提供一个HelloWorldScene场景类,我们将下面的代码段替换bool HelloWorld::init()方法 =eyx)tnkB   FuD ^udaC   UqZ6Vds:4K  

boolHelloWorld::init()
{
//////////////////////////////
//1. super init first
if( !CCLayer::init() )
    {
returnfalse;
    }
//从导出文件中解析出场景节点
CCNode *pGameScene = SceneReader::sharedSceneReader()->createNodeWithSceneFile("RPGGame.json");
//将场景添加到当前场景
this->addChild(pGameScene);
//添加一个菜单项,作为关闭按钮。
CCMenuItemFont *itemBack = CCMenuItemFont::create("End", this, menu_selector(HelloWorld::menuCloseCallback));
   itemBack->setColor(ccc3(255, 255, 255));
//设置坐标为右下角,VisibleRect类是一个辅助类,用于获取和屏幕大小相关的属性
    itemBack->setPosition(ccp(VisibleRect::rightBottom().x- 50, VisibleRect::rightBottom().y + 25));
//创建菜单,用于存放菜单项
CCMenu *menuBack = CCMenu::create(itemBack,NULL);
   menuBack->setPosition(CCPointZero);
   menuBack->setZOrder(4);
   
this->addChild(menuBack);
returntrue;
}

bfe"FS !   ":+DkV   以上代码即可将编辑器中的内容展示到游戏中了。 $'HNY)T&@   不过注意,使用场景解析出来的内容还是需要自己手动释放了,这里修改menuCloseCallback关闭按钮的回调函数,在程序退出前清理掉所有的单例数据。 ?^"*6i'c8   方法实现如下: ?zU@_>d"EP  

voidHelloWorld::menuCloseCallback(CCObject* pSender)
{
//清理动画解析内容缓存
CCArmatureDataManager::purge();
//清理场景解析内容缓存
SceneReader::sharedSceneReader()->purge();
//清理动作缓存
    cocos2d::extension::ActionManager::shareManager()->purge();
//清理UI解析内容缓存
GUIReader::shareReader()->purge();
//通知导演结束游戏
CCDirector::sharedDirector()->end();
//判断当当前平台为ios平台时,退出程序(ios平台较为特殊,程序只有使用exit(0);方法才能控制程序的结束)
#if (CC_TARGET_PLATFORM== CC_PLATFORM_IOS)
    exit(0);
#endif

} ]sh0nU   Cl vm\gn<O   ,wY?'

posted on 2014-06-23 18:08  游戏开发实验室  阅读(383)  评论(0)    收藏  举报

导航