cocos2dx 4.0入门之泡泡龙项目的分解(二)

上一章完成了最小化的可运行程序,这一节讲解一下代码:

一、了解cocos基本概念:

导演、场景、层、精灵、动作等这些是cocos最基本的东西,从数据结构的角度来看,这几个类的关系可以概况为:以导演类为根节点的一颗树(场景、层、精灵、动作都是继承自节点类的)
这一点可以看官方的介绍,图文讲解更详细

https://docs.cocos.com/cocos2d-x/manual/zh/basic_concepts/

简而言之,这就是个俄罗斯套娃,我们要注意的主要是套娃的顺序,俄罗斯套娃是大的套娃套小的套娃,不能小的套娃套大的(cocos是可以的,因为节点是同级的,但是一般来说没有深入了解之前我们按默认顺序来)

套娃顺序:

一个导演(N个场景(N个层(N个精灵(N个动作))))

接下来是每个概念的朴素理解:

1.导演:程序窗口,负责管理全局,控制程序的启动、暂停、关闭(导演嘛,可以决定这场戏开始、暂停、结束)
导演在我们身边,导演竟是我们自己。[笑~]

2.场景:在游戏中我们从一个地图到另外一个地图,每个地图都不同的风景、npc、事件等等,每一个地图可以称为一个场景。
每一个场景就是电影中的一个小段落,我们会在场景中看到各种各样的风土人情以及经历各种光怪陆离的故事。

3.层:在每个场景中,也就是每一个游戏地图中,我们可以做不同的事情,遇到不同的npc,其中怎么布置每一个npc、每一个风景、每一个事件都可以在层中进行。
场景决定了我们这一场戏中,那些东西可以打碎、哪些东西不能打碎、哪些是摆设、哪些东西放在哪里(。在一个地图,假如存在几棵树,可以用不同的层决定哪些树可以攻击,哪些树就是个装饰)。

4.精灵:精灵就是地图中的玩家、npc、怪物、宝箱、可拾取的道具等可以交互的对象。
精灵就是陪我们演出这一场戏的演员,精灵决定了我们看到的演员够不够帅气、BOSS够不够邪恶威猛、屠龙宝刀是不是亮瞎眼。

5.动作:动作是提前给精灵(演员)做好的一系列动作和反应,比如被打了做什么动作、攻击做什么动作等。
动作决定了我们这一场戏演的是不是精彩、特效够不够绚丽、招式是否花里胡哨。

6.控件:控件如果做过GUI程序的话很好理解,我们可以将其归类到精灵,其主要就是做游戏中的界面,例如:背包栏、账号密码输入框、各种界面按钮都是控件。

二、新晋导演

导演的自我修养第一条:
专业的事情交给专业的人。

现在我们作为一个新人导演,我们要开始布置我们的第一场戏了,首先我们要做的是布置一个场景,但是作为一个导演,我们不可能亲自去管理每一个场景,以及怎么布置场景。因此,我们肯定要找一个人来负责布置和管理场景,于是我们恪守导演自我修养的第一条:专业的事情交给专业的人。
好了,我们现在去找找谁来负责这个工作,就决定是你了,去吧!布景师(ShootBubbleSceneManager)。
现在你告诉了布景师(ShootBubbleSceneManager)场景是下面这样的:
这个场景就是主场景(mainScene),我们的戏,就是从这里开始的。
在这里插入图片描述
于是,布景师(ShootBubbleSceneManager)脑海里有了自己要做一个主场景(mainScene)的任务,然后迅速做好了方案(Scene* createScene())。

#ifndef __ShootBubbleSceneManager_H__
#define __ShootBubbleSceneManager_H__

#include "cocos2d.h"
using namespace cocos2d;

class ShootBubbleSceneManager
{
public:
	//    声明指向不同场景对象的指针
	Scene* mainScene;
	//创建第一次进入游戏的场景
    Scene* createScene();
};

#endif

#include "ShootBubbleSceneManager.h"
#include "StartLayer.h"
using namespace cocos2d;

//创建第一进入游戏场景
Scene* ShootBubbleSceneManager::createScene()
{
    //创建一个场景对象
    mainScene = Scene::create();
    //创建一个布景对象
    auto mlayer = StartLayer::create();
    mlayer->sbsm=this;
    //将布景添加到场景中
    mainScene->addChild(mlayer);
    //返回主场景
    return mainScene;
}

方案交给了导演,但是导演不太理解下面这些是什么:

  //创建一个布景对象
    auto mlayer = StartLayer::create();
    mlayer->sbsm=this;
    //将布景添加到场景中
    mainScene->addChild(mlayer);

于是,你问布景师(ShootBubbleSceneManager),mlayer是谁?

布景师(ShootBubbleSceneManager)用关爱智障的眼神看着导演,告诉他这是我们组的道具师团队(StartLayer)的小名,他们负责道具的制作与摆放。

导演挠了挠头,知道了mlayer是负责主场景的道具师(StartLayer),并乘机提出:现在我们去看看道具师(StartLayer)是怎么布置的吧。用来掩饰自己的尴尬。

1.博客中标注原创的文章,版权归原作者 酒与花生米 所有;

2.未经原作者允许不得转载本文内容,否则将视为侵权;

3.转载或者引用本文内容请注明来源及原作者;

4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒与花生米

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值