精通Cocos2d-x游戏开发(基础卷)
上QQ阅读APP看书,第一时间看更新

前言

第一次接触Cocos2d-x是在2012年初。当时与一位朋友尝试着制作了一款小游戏,上了App Store平台。在开发中,笔者主要负责游戏美术,这其实不是笔者的长项,所以该游戏的美术效果可以用惨不忍睹来形容。虽然那时候的引擎版本只是1.x,并且开发的游戏相当失败,但通过这个游戏,笔者对Cocos2d-x产生了浓厚的兴趣。

其实Cocos2d-x算不上是一款功能超强的游戏引擎,但它很简洁、小巧,是一款轻量级的游戏引擎。大多数程序员实际上更喜欢简洁的东西,而不是庞然大物。Cocos2d-x简洁的设计结合丰富的Demo,让人可以很快上手,并能使用它开发出一些简单的游戏。其代码的开源及跨平台特性也相当诱人。Cocos2d-x本身的这些特性结合市场的需求,使其很快就成为了手游开发的主流引擎之一。

在Cocos2d-x刚开始火的那一段时间,市面上关于Cocos2d-x的书籍还十分匮乏。笔者利用业余时间对该引擎进行了深入研究,并能使用它开发了几个小游戏,也总结了一些开发经验。之后一段时间,笔者萌生了按照自己的想法写一本Cocos2d-x游戏开发图书的想法。这个想法很快便进入了实施阶段,但进展远没有想象的顺利。其原因一方面是笔者写作的速度跟不上Cocos2d-x的更新速度,另一方面是笔者的工作任务也很重,加之写作期间还开发了四五个游戏作品,这使得笔者本来就不充裕的时间更是捉襟见肘。

的确,Cocos2d-x的更新非常频繁,并且引擎更新的同时带来了很多接口的变化,一些代码甚至需要进行重构。除了原有内容的变化改动之外,日益增加的新功能也加大了写作的难度。虽然2013年底笔者已经完成了初稿,但是回过头来阅读一遍,发现书稿难以达到自己的预期。于是笔者做了一个决定:推翻重写。在经历了几个月的重写之后,Cocos2d-x版本已经升级到了3.0。笔者发现又有许多新增功能和新特性需要重新了解和学习,于是又经历了一段时间的学习和使用,不得不决定再次对该书做较大的改动,几乎又推翻重写了一次。可以说,这几年笔者的业余时间只做了这么一件事情。从开始写作直至完成书稿,整个过程虽然寥寥数语,但却饱含艰辛。在写作的过程中,Cocos2d-x的书籍如雨后春笋,加上自己工作繁忙,写作时间所限,甚至还有放弃的念头。但写一本自己满意的Cocos2d-x图书的信念支撑笔者走到了最后。当然,这一切对笔者而言很有意义,也很有价值:其一是有机会能和读者共享自己的心得体会;其二是自己也得到了提升。毕竟写书相对于写代码而言需要考虑的东西更多。代码写错,还可以改正,而书写错则将误人子弟。

考虑到读者群体的不同,笔者将本书分为《基础卷》和《进阶卷》两个分册。《基础卷》主要是为了让读者夯实Cocos2d-x游戏开发的基础知识,适合没有经验的零基础读者阅读。《进阶卷》的内容全面,且实用性很强,可以拿来就用,快速解决问题,适合想要进阶学习的读者阅读,也可以作为一本解决实际问题的手册使用。当然,对于想要全面而深入学习Cocos2d-x游戏开发的读者而言,则需要系统阅读这两本书方可。

本书是《精通Cocos2d-x游戏开发》的《基础卷》,是一本略有深度的Cocos2d-x入门图书。本书系统地介绍了Cocos2d-x基础语法,并由浅入深介绍了Cocos2d-x游戏引擎底层的实现,同时还引申出了其他相关问题和使用时应该注意的事项。对于初学者,本书的部分内容可能略有些深入,如果遇到难以理解的地方,建议先跳过,等读完后续章节之后再回过头来阅读前面未理解的部分,相信对很多问题就有了新的认识。学习任何知识,基础都是重中之重,相信本书可以帮助读者打下Cocos2d-x游戏开发的坚实基础。

本书内容特色

1.内容新颖,紧跟趋势

本书内容新颖,紧跟技术趋势,以当前主流的Cocos2d-x游戏引擎版本3.x为主进行讲解,在一些必要的地方也兼顾了早期的2.x版本的内容,并对新旧版本之间的差异做了必要说明,适合更多的读者群体阅读。

2.追本溯源,注重核心

本书用较多篇幅介绍了Cocos2d-x游戏引擎的基础框架,并对UI与交互的相关内容做了详细讲解。这些内容都是Cocos2d-x游戏引擎的核心技术,深入理解这些内容,便于读者更好地理解Cocos2d-x游戏引擎的底层实现。

3.追求原创,与时俱进

相较于市场上千篇一律的Cocos2d-x学习教程,本书力求做到与众不同,与时俱进。书中的内容不是堆砌知识点和简单地翻译技术文档,而是从学习和理解的角度出发,并结合作者的实际开发经验,按不同层次读者的学习特性组织内容和讲解,从而达到更好的讲授效果。

4.由浅入深,循序渐进

本书内容编排非常科学,讲解时先抛出一些简单的问题供读者思考,然后发散思维,再逐步扩展到更多、更深入的问题上,继而步步推进,抽丝剥茧,逐层深入,将读者顺利引领到不同阶段的学习之中。

5.风格活泼,讲述准确

刻板的风格不是笔者所钟爱的行文风格。笔者更喜欢用较为简单和自由的文字和读者交流,所以本书阅读起来并不会枯燥乏味。另外,讲解的准确性是科技图书的基本要求,只有准确的表达才能让读者不至于出现太多的理解偏差。所以笔者对书中的表述经过了反复斟酌和提炼,并采用了大量例图、举例和类比等手法,以便于读者更容易理解和掌握。

6.举一反三,扩展思维

本书并不满足于按部就班地介绍功能和API,而是从实际应用出发,扩散思维,在解决问题的同时,让读者思考问题的本质,以更深入地理解所学知识,从而达到举一反三,学以致用的效果。即所谓知行合一,方能真正掌握知识。

本书内容及知识体系

第1篇 入门篇(第1~5章)

本篇属于Cocos2d-x开发的基础铺垫,涵盖的主要内容有Cocos2d-x开发环境搭建、学习建议、注意事项及低级错误总结,以及必备的C++编程基础和指针等。本篇主要是给没有任何Cocos2d-x使用经验的读者作为铺垫阅读。其中,图解指针和C++11简介这两章内容适合由Unity3D(简称U3D)、Java或其他语言转到Cocos2d-x的读者阅读。

第2篇 基础框架篇(第6~17章)

本篇主要介绍了Cocos2d-x的核心框架系统,属于Cocos2d-x开发必练基本功。本篇涵盖的主要内容有节点系统、内存管理、场景和层、精灵、动作系统、播放动画、纹理、文字显示、运行机制、渲染机制、消息机制和Schedule等。学习完本篇,读者可以掌握Cocos2d-x游戏引擎的运行原理及相关开发知识。

第3篇 UI和交互篇(第18~25章)

本篇专门介绍了Cocos2d-x的各种交互手段及整个GUI架构,同基础框架篇一样,本篇也属于Cocos2d-x的必练基本功。本篇涵盖的主要内容有触摸输入、文本输入、按钮与重力感应输入、Menu和MenuItem,以及GUI框架的功能控件、文本输入、文本显示及容器控件等。

第4篇 工具链篇(第26~31章)

工欲善其事必先利其器。本篇主要以CocoStudio的工具集为核心,介绍了常用工具的使用,解决了一些工具在使用过程中遇到的问题,适合想要了解或学习Cocos2d-x周边工具的读者阅读。本篇涵盖的主要内容有CocoStudio的UI编辑器、场景编辑器、动画编辑器、2.x编辑器及CocosBuilder等。

本书阅读建议

由于Cocos2d-x游戏引擎是基于C++的,所以一些基础的C++知识是必须要知道的。假如读者完全没有任何编程方面的经验,就不适合阅读本书。虽然本书中也介绍了部分C++的相关知识,但那是有针对性的,并不是系统地介绍。所以,如果读者没有任何编程基础,可以先阅读一本类似于《C++入门很简单》之类的图书。虽然C++入门并不是想象的那么简单,但这类图书还是可以让你对C++建立一个系统的了解。

书中部分章节的内容可能较为深入,如果读者对这部分内容一时难以理解,则可以先跳过而阅读后续章节,等读完后续章节再回头阅读这部分能容,也许就豁然开朗了。

书中的部分例子引用自Cocos2d-x引擎自带的TestCpp,读者学习的过程中可以参照TestCpp中的例子。虽然本书偏重于理论,但其中介绍到的代码还是可以在TestCpp中编写、修改,并运行起来,从而加深理解。

另外,切勿死记硬背。编程学习不等于应付考试,很多知识点可以现用现查,解决问题就行。读者应该把注意力放在对编程本质的理解上。

本书读者对象

❏零基础学Cocos2d-x游戏开发的人员;

❏Cocos2d-x自学人员;

❏想系统学习Cocos2d-x的程序员;

❏想巩固和深入理解Cocos2d-x基础的程序员;

❏想开发跨平台手机游戏的人员;

❏从其他开发转向Cocos2d-x的程序员;

❏大中专院校的学生和社会培训的学员。

本书源代码获取方式

本书涉及的源代码大多是Cocos2d-x游戏引擎自身的代码。关于如何获取Cocos2d-x游戏引擎的完整代码,请读者详细阅读本书第1.5节中的介绍。

本书作者

本书主要由王永宝主笔编写。其他参与编写的人员有李小妹、周晨、桂凤林、李然、李莹、李玉青、倪欣欣、魏健蓝、夏雨晴、萧万安、余慧利、袁欢、占俊、周艳梅、杨松梅、余月、张广龙、张亮、张晓辉、张雪华、赵海波、赵伟、周成、朱森。

本书的编写对笔者而言是一个不小的挑战。虽然笔者投入了大量的精力和时间,但只怕百密难免一疏。若读者在阅读本书时发现任何疏漏,希望能及时反馈给我们,以便及时更正。联系我们请发邮件至wyb10a10@163.com或bookservice2008@163.com,也可以加入本书的QQ交流群83177510,以便于和作者及广大读者交流学习心得,解决学习中遇到的各种问题。

最后祝各位读者读书快乐,学习进步!

作者