创建我们自己的Scene

与上一篇隔了好长时间,期间遇到期末考试,又是赶上新年,所以落下了一段时间没有写。
最近转战到Unity3D了,也打算出个学习记录,在此顺便做个提前预告,希望喜欢Unity3D的小伙伴们能够多多指教哦!

前情回顾

上一篇,我们分析了Cocos2d-x自带的HelloScene,理清了了从引擎启动,到显示第一个Scene的过程。
“纸上得来终觉浅,觉知此事要躬行。”这一篇呢,我们就来实现自己的场景。

1. 添加自己的场景类

自己的场景类 MyScene

普通的C++类,两个文件,一个头文件,一个源文件。
首先来看的是头文件,看看定义了那些接口。

MyScene.h

'

仿照HelloWorldScene头文件,定义了一个成员函数,一个静态方法,和一个宏函数,下面逐个介绍一下为什么要定义这些函数,以及它们都有什么作用。

1.virtual bool init()
这是MyScene的初始化函数。Cocos2d-x在构造新对象时,采用了创建和初始化分开的操作。new操作实际上进行的主要任务就是对象内存的分配,对象属性初始化的工作集中在了init函数中。有一点需要注意的是,子类的init函数实现的时候,需要手动调用父类的init函数,来进行父类的初始化;没有构造函数能够自动初始化父类的功能。再说init的返回值,指示的是对象初始化是否成功。

  1. static cocos2::Scene* createScene();
    静态工厂函数,负责场景的创建。如果你比较细心,就会发现,我们的MyScene它其实不是个Scene,它继承的是Layer啊。这边因为只是一个小的 场景,所以并没有把场景和层区分的太开。事实上,场景可以看作是许多Layer的容器,一个场景可以有许多的Layer。一般来说,场景是看不见的,而Layer确实实在可见的。
    这里的静态函数,是创建了一个Layer,然后也创建了一个Scene,将Layer添加到Scene中,故其名字叫做createScene

  2. CREATE_FUNC宏函数
    关于这个宏的讲解在前面一篇中有所提到,如果不太记得的小伙伴可以翻看前面一篇cocos2dx之HelloWorld代码分析。这里再次简述一下,这个宏函数负责创建了MyScene对象,加入到了自动释放池,并且调用了它的init方法。这个方法不需要实现,宏帮助你自动完成了。

2. 实现init方法

MyScene::ini

这是我们的实现。
很简单,添加了红绿蓝三个矩形方块。正如前面所说的,我们看到在这儿调用了父类中的init方法,并且也根据其返回值来判断是否初始化成功。
关于三个层的创建代码,此处按下不表,后面章节会做细致的解释。
此处需要注意的是addChild函数的调用,需要将创建的Layer加入到我们的MyScene中,为什么要这样呢?原因是cocos2dx采用了树形的对象管理方案,创建的三个colorLayer通过调用addChild函数成为了MyScene的子对象,引擎在渲染MyScene对象的时候,会把它的子对象一并进行渲染。别忘了最后返回一个true,来说明你的对象如期创建成功了。

3. createScene静态函数的实现。

MyScene:createScene

场景创建的一个静态工厂函数。代码真的是一目了然,先创建一个场景,然后创建一个层,把层加入到场景中,返回该场景。

3. 运行我们的Scene

前一篇我们知道,引擎启动时候会调用bool AppDelegate::applicationDidFinishLaunching()函数,在此,我们切换到AppDelegate.cpp文件,找到bool AppDelegate::applicationDidFinishLaunching()函数,在函数最后添加如下代码:

调用MyScene

相关的头文件包含,相信熟悉C++的你一定会厌烦我再重复。

编译生成之后,就可以看到相应的效果了。

如果有什么问题的欢迎在下面评论区提出,我一定给你细致答复。加我微信也可:LCJY93,欢迎指教。

结尾

希望你的游戏开发之旅充满快乐,希望你和我一样热爱游戏,热爱游戏开发!

下回预告

是时候展现真正的技术了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容