cocos2d pod_Cocos2D-X权威指南(第2版)[按需印刷]

荆鸿畅
2023-12-01

第一部分

基础篇

本部分内容

第1章认识Cocos2D-X

第2章搭建跨平台的开发环境

第3章Cocos2D-X中的核心类

第4章Cocos2D-X中的图片渲染类

第5章Cocos2D-X中的动作、特效与动画

第6章Cocos2D-X中的菜单项和文本渲染系统

第7章Cocos2D-X中的事件处理机制和UI控件

第8章Cocos2D-X中的瓦片地图集

第9章Cocos2D-X中的声音、存储和网络

第10章Cocos2D-X中的物理引擎

第1章认识Cocos2D-X

在这个“不愿等待”的时代,人们更需要“随时随地”与人通信或享受服务。相比台式计算机、笔记本电脑,移动设备是最贴近消费者的媒体。由于智能手机的兴起,移动电话的更新换代越来越快。而手机作为“带有体温”的设备,有更多功能的需求,移动互联网时代的到来,移动应用成为了大家生活中的一部分,而游戏作为人的天性,在移动应用中更是占有举足轻重的位置。在游戏开发中,引擎可以起到提高开发效率、提高游戏品质的作用,Cocos2D系列在众多游戏引擎中脱颖而出,成为众多开发者的首选,本章就带领大家走进Cocos2D和Cocos2D-X的世界。

1.1什么是Cocos2D

大家认识并且熟悉Cocos2D,应该是从App Store上几款非常火爆的游戏开始的,但是实际上Cocos2D引擎最早并非是为iOS(iPhone Operating System)设计的,最早它是一款用Python语言开发的游戏引擎,后来使用Objective-C移植为iOS平台的Cocos2D-iPhone版本,不仅如此,Cocos2D被移植成各个版本,形成了庞大的Cocos2D家族。

1.1.1Cocos2D的特点

Cocos2D是一个开源框架,用于构建二维游戏、演示程序和其他图形界面交互应用等。它于2008年2月诞生于阿根廷Cordoba市附近的Los Cocos,最早是由Ricardo和他的朋友们用Python开发的。最早引擎取名自开发地Los Cocos。后来引擎的0.1版本改名为Cocos2D。

2008年6月,该引擎宣布与iOS平台对接,并在当月发布了以Objective-C为主语言的Cocos2D-iPhone版本,它与最早的Python版在设计思路上是一致的。之后使用Cocos2D-iPhone开发的首款游戏StickWars在App Store美国区付费榜冲到第一,Cocos2D进入了商用阶段。

.  随着App Store的发展,很多开发者使用Cocos2D-iPhone开发游戏并将游戏提交到App Store上,截至2008年年底,App Store就已经有数十款游戏使用Cocos2D开发。

随着智能手机平台的发展,在其他平台上的游戏开发需求也开始多了起来,此时,Cocos2D的各种平台、各种编程语言移植版也开始涌现。ShinyCocos、Cocos2D-Android、CocosNet、Cocos2D-JavaScript相继诞生,Cocos2D的分支如图1-1所示。

图1-1Cocos2D的发展及其分支

同时,英国的设计大师Michael Heald为Cocos2D设计了新的标志,如图1-2所示(最早的Cocos2D的标志(Logo)是一个奔跑的椰子)。

以下是Cocos2D的一些版本介绍。

ShinyCocos:把Cocos2D-iPhone绑定Ruby的实现。

CocosNet:Cocos2D的.NET实现,运行在Mono上。

Cocos2D-Android:Cocos2D的Java实现,并且能够在Android操作系统上运行。

Cocos2D-Android1:此分支由一位国内资深开发者建立并发展的,这是另一个关于Android操作系统的Cocos2D引擎实现。

Cocos2D-X:Cocos2D的C++语言移植版,目前2.0版本以上支持Win32(Windows 32,视窗32位操作系统)、Android、iOS。

Cocos2D-XNA:由Cocos2D-X团队开发的分支。支持WP(Windows Phone,视窗手机操作系统)。

Cocos2D-HTML5:由Cocos2D-X团队开发的分支。支持HTML5 Canvas技术,获得Google等公司的资助。

Cocos2D-JavaScript:Cocos2D的JavaScript语言实现,由于HTML5技术的发展,相信Cocos2D-JavaScript会有更广阔的前景。

1.1.2Cocos2D的主要功能

作为一款游戏引擎,在游戏开发方面,Cocos2D引擎具有很多的实用功能。

首先它降低了技术的复杂性。它是基于OpenGL(Open Graphics Library,开放图形库)和OpenGL ES(OpenGL for Embedded Systems,嵌入式系统开放图形库),但是使用Cocos2D系列的引擎无须掌握OpenGL的相关知识,大多数Cocos2D游戏中简单的图形对象由Sprite精灵对象生成。Sprite就是一个贴图,可以调用Cocos2D中的方法来实现图片的缩放,如图1-3所示。

也可以调用Cocos2D实现旋转,如图1-4所示。

图1-3Cocos2D实现缩放的内容图1-4Cocos2D实现旋转的内容

你无须关心这些功能在底层是如何实现的,同时它是开源的,可以获得引擎的全部源代码,也可以根据需要用OpenGL知识来修改或生成新的游戏对象。对于入门来说,Cocos2D可以避免你花费时间去研究OpenGL的相关内容,同时它也不排斥资深开发者对引擎的修改,可随心所欲地使用。

Cocos2D自带的物理引擎可以提高玩家的乐趣,目前非常火爆的“愤怒的小鸟”等多款游戏都在游戏中加入了物理引擎,Cocos2D系列引擎集成了目前比较流行的两款物理引擎Box2D和Chipmunk,从而大大方便了游戏开发者,并且提高了开发的效率。Cocos2D中使用物理引擎的例子如图1-5和图1-6所示。

图1-5Cocos2D中使用物理引擎Chipmunk的例子图1-6Cocos2D中使用物理引擎Box2D的例子

它的开发者社区十分活跃,在开发过程中如果有问题,很快会得到解决,而且,相应的参考资料也很多,开发者们非常愿意分享他们的经验和知识。因为是开源的,你的修改也相对方便了许多,在游戏开发中会有很大的灵活性,不必完全束缚在引擎的功能限制上,对于富有经验的游戏开发者来说,这点十分重要。

同时,由于其开源性和强大的社区支持,相应的工具开发也非常活跃,从最早的粒子编辑器到动画编辑器,目前集成编辑器CocosBuilder已经初见雏形并且支持Cocos2D和Cocos2D-X,触控科技新发布的CocoStudio也在逐步完善。关于相关的工具,本书也会在之后的章节做详细的介绍。

1.1.3Cocos2D的应用

Cocos2D作为一个游戏引擎,已经从最早的版本被移植到很多种语言和框架上,其中最流行的包括支持iOS操作系统的Cocos2D-iPhone版本,支持Android操作系统的Cocos2D-Android和Cocos2D-Android1,以及可以横跨两大操作系统(iOS和Android)的Cocos2D-X版本,当然不能忽略有着先天跨平台优势的Cocos2D-HTML5版本,相信不久的将来Cocos2D将会得到更广泛的应用。

当然,Cocos2D最为辉煌的舞台就是App Store,使用Cocos2D-iPhone和Cocos2D-X两个版本开发的游戏在App Store上占有着举足轻重的位置,曾经创下过很多辉煌的战绩。如图1-7所示,使用Cocos2D引擎开发的游戏在Top Paid(付费应用榜)前9名中占2席,在Top Free(免费应用)前12名中占7席,并且有占据两个榜的第一位的辉煌战绩。

图1-7使用Cocos2D引擎开发的游戏

随着Cocos2D-HTML5的发布,相信将来Cocos2D引擎会有更大、更好的舞台发挥,尤其是在网页游戏方面,而借助HTML5这个跨平台利器,Cocos2D在跨平台的支持上将会迈出更大的一步。

1.2什么是Cocos2D-X

之前已经介绍了Cocos2D家族,Cocos2D-X是Cocos2D家族的一个重要分支,因为它的跨平台特性,开发者编写一套代码就可以横跨Android和iOS两大平台。从而提高开发者的开发效率。Cocos2D-X不但具有跨平台的特性,它还保留了Cocos2D的全部特性,这样Cocos2D开发者可以很轻松地掌握Cocos2D-X。

1.2.1Cocos2D-X的特点

随着智能设备平台的普及,用户数量的增多,智能平台的应用,尤其是游戏异常火爆,从植物大战僵尸到愤怒的小鸟,移动平台游戏的开发进入了新的阶段。但另一方面平台的多样性也给开发者带来诸多不便,怎样将一款游戏发布到多个平台也是开发者们一直在探索的。特别是随着Android和iOS平台的兴起,开发者有了游戏跨平台的需求,随即Cocos2D-X分支诞生,其中“X”包含两个意思:一方面是C++的文件扩展CXX,“X”标志着该项目是由C++编写的;另一方面意味着交叉,这个开源项目标是让用户创建跨平台的代码。Cocos2D-X是Cocos2D框架用C++重写的,因为Android和iOS均支持C++。Cocos2D-X具有跨平台的特点,再加上Cocos2D全球社区的支持及Cocos2D框架简单易学,使开发者十分容易快速上手。

Cocos2D-X迅速成为开发者的首选。经过一段时间发展,众多开发者使用Cocos2D-X开发出了多款游戏,包括捕鱼达人、地铁总动员等。2012年年初,英国设计大师Michael Heald专门为Cocos2D-X重新设计了新的标志,如图1-8所示。

2012年年初,Cocos2D-X团队再次开发两个分支,分别是支持Windows Phone的XNA版和支持HTML5的版,后者还得到了Google公司的赞助。在Zynga的帮助下,Cocos2D-X已经研发绑定JavaScript的Cocos2D-X的2.0版本。随着Cocos2D及其分支的发展,Cocos2D会有更多跨平台特性从而可以支持更多的平台,并且提高开发者的开发效率,相信Cocos2D-X将会更加受到广大开发者的欢迎。Cocos2D-X引擎也可以扩大其影响,成为全平台的二维游戏引擎。

1.2.2Cocos2D-X的主要功能

Cocos2D-X继承了Cocos2D的全部特点,包括如下内容。

流程控制:易于管理不同场景之间的流程控制。

精灵:快速而方便的精灵。

动作:可组合精灵的动作(如移动、旋转和缩放等),使精灵动起来。

特效:特效包括波浪、旋转和透镜等特性。

平面地图:支持包括平面地图和45度角地图。

转换:从一个场景移动到另外一个不同的场景。

菜单:创建内部菜单。包括主菜单和游戏菜单。

文本渲染:支持文本渲染标签。

文档:编程指南+API参考+视频教学+很多教你如何使用的简单测试例子。

BSD许可:BSD(Berkly Software Distribution,伯克利软件套件)开源协议是一个给予使用者很大自由的协议。基本上使用者可以自由使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

基于OpenGL:支持硬件加速。

图1-9所示为国外网友为Cocos2D-X制作的广告,说明了Cocos2D-X对于iOS和Android两个主流平台的支持。

图1-9国外网友为Cocos2D-X制作的广告

1.2.3“百花齐放”的辅助工具链

作为游戏引擎,Cocos2D-X一直因为相关工具链的不完善而遭人诟病,实际情况是大多数的公司都会为Cocos2D-X编写自己的工具,只是工具往往是针对一个项目或者只供内部使用,并不是推广使用的,因为一个工具作为一个公用软件使用,需要长期对用户体验进行优化;CocosBuilder是第一步,这个由Zygna支持的项目一直在Ricardo Quesada的领导下开发,而CocosBuilder也被定义为Cocos2D家族的引擎官方首选工具,但是随着Ricardo Quesada离开Zygna,该官方工具也被停止了,目前知道的是依然有个别人在更新并完善CocosBuilder。

触控科技于2013年3月春季的开发者大会后推出了CocoStudio,这是另一个官方工具链,它包括动画、界面、数据和场景编辑器,由于基于.NET和C#开发,所以初期CocosBuilder目前只有Windows版本,历经一年的发展,CocoSudio也由最初的运行中频繁崩溃和兼容性差,发展成为较稳定的开发工具,目前工具也在进行Mac版的移植工作,相信在Cocos2D-X新的版本中CocoStudio会占据更加重要的位置,图1-10为CocoSudio的Logo。

图1-10CocoSudio的Logo

随着引擎使用群体的不断扩大,第三方的工具链和框架也不断出现,包括支持Cocos2D-X的粒子编辑器——V-Play等,以及基于Lua的Quick-Cocos2D-X。可以说,由于Cocos2D-X的开源性,更多相关的工具和框架会被中小开发者所采纳,进入Cocos2D-X的开发门槛会越来越低。

1.2.4Cocos2D-X主导的3.0时代

从2012年年底,也就是Cocos2D 2.1版本开始,Cocos2D家族的主要成员(Cocos2D-X、Cocos2D-iPhone、Cocos2D-HTML5以及开发工具CocosBuilder)开始进行版本的联合发布,联合版本发布标志着Cocos2D的主流版本函数接口的统一,随着Cocos2D-X的使用者逐渐增加,并且Cocos2D-X也可以很好地支持iOS系统(很多项目都以iOS版本为开发基础版本,之后再移植Android版本),Cocos2D-iPhone的地位渐渐不像之前这么重要了,在2013年9月底的CocoaChina秋季开发者大会中,Cocos2D-X创始人王哲宣布了Cocos2D-X的3.0计划,并且Cocos2D第一开发者Ricardo Quesada正式加盟触控科技,将主导Cocos2D-X 3.0版本的开发,这正式预示着Cocos2D-X取代Cocos2D-iPhone成为Cocos2D最重要的分支,另外Cocos2D的最重要编辑器也由CocosBuilder变成了之前由触控科技团队主导开发的CocoStudio,相比于之前1.0版本到2.0版本的进化,这次进化更有跨时代的价值。Cocos2D引擎家族进入“3.0”时代。

说3.0具有跨时代意义,不止是因为Cocos2D-X跨平台引擎成为最主要的分支,还因为Cocos2D-X 3.0对于引擎的改动也是前所未有的,大体上就是全面引入C++风格,去除Objective-C风格,并且对于代码的重新审核和重构,确保了引擎在效率上的显著提升,在1.0到2.0的变化过程中运行效率就提升了不少,这次更是重新审核并重构了核心渲染部分的代码。Cocos2D-X 3.0的变化包括以下方面。

采用C++11标准,包括“auto”关键字的加入等。

移除Objective-C风格,包括“CC”前缀的类命名。

新的渲染系统,添加全局z轴坐标功能,可以在渲染排序时完全不受添加顺序的影响。

字体渲染的重构。

全新的事件分发和注册方式,注册事件更加方便。

物理引擎和引擎更好地结合,在引擎中加入物理相关的类。

Lua绑定使用体验的提升,加入使用域以及C++类转换Lua类的工具。

总体来说,新版的引擎无处不体现着Cocos2D-X更易用、更高效的理念,也正因为这些比较大的变化,才有了本书的重新编写。

1.2.5Cocos2D-X的应用

由于跨平台特性,Cocos2D-X得到了诸多开发者的喜爱。目前,Cocos2D-X引擎的全球市场渗透率已达到30%,海内外多家顶尖游戏公司(如网易、菲音、热酷、乐元素、人人游戏、Zynga、Gamevil、LINE等)都有基于Cocos2D-X开发的手游产品。而国内,月收入过千万的游戏中,《我叫MT》、《龙之力量》、《大掌门》、《神仙道》、《君王2》等也都是用Cocos2D-X引擎开发。目前Cocos2D-X游戏引擎的全球占有率为30%,排名全球第一。除了占有率,Cocos2D-X的游戏质量也在逐步提升。图1-11所示为截至2013年年底月收入千万的部分游戏清单,其中标注Cocos2D-X图标的游戏为使用Cocos2D-X开发,不仅如此,在各大优秀手游评选中,Cocos2D-X开发的游戏也保持着半数以上的席位。

图1-11截至2013年年底月收入千万的部分游戏清单

Cocos2D-X在日韩手游开发中也占据着主要的位置,日本手游《勇者斗恶龙仙境》和韩国角色扮演大作《泽诺尼亚》都由Cocos2D-X开发,日本的图书市场还出现了不少Cocos2D-X图书,开发者的活跃程度不亚于中国。图1-12为日本开发者为Cocos2D-X设计的“四姐妹”宣传图,分别为:Cocos2D-X、Cocos2D-HTML5、Cocos2D-X Lua/JavaScript脚本绑定、Cocos3D扩展,反映日本开发者对该引擎的喜爱。

令人更加意想不到的是,凭借着良好的跨平台性,Cocos2D-X的应用已经不仅仅在游戏领域了,前有小米盒子界面开发采用Cocos2D-X引擎,后有新东方的教育软件。2012年,新东方在线团队招聘了一些iOS工程师,计划开发一款互动性较强的幼教类产品。这些工程师中有人曾接受过Cocos2D引擎的培训,于是便选择了这款引擎。随着业务的增长,他们开始往Android平台迁移,这个过程中,Cocos2D-HTML5强大的跨平台性让他们十分惊喜,在过去的200多天里,新东方在线的工程师们已经用Cocos2D-HTML5开发出了150余款产品,如此高的开发效率让人赞叹,Cocos2D-HTML5也扮演着重要的作用。

1.3Cocos2D-X与Cocos2D-iPhone的比较

Cocos2D-X与Cocos2D的其他版本及Cocos2D-iPhone版本最大的不同之处就是,它并不是单纯为某一个平台而开发的,它的目的就是为了跨平台,包括Cocos2D-X和其分支下的Cocos2D-HTML5版本,所以从语言的选择上,Cocos2D-X选择了几大主流移动平台(Android、iOS和Windows)都支持的C++作为开发语言,并且在效率上也有所保证,Cocos2D-HTML5版本采用了HTML5作为跨平台的选择,使得Cocos2D游戏框架得以在更多的平台上使用,尤其是网页平台。

由于Cocos2D-X的跨平台性,它的开发工具也体现出跨平台的特性,如果使用Windows操作系统,可以使用Visual Studio进行开发,也可以使用Eclipse的C++插件及Android开发环境进行开发;如果使用Linux操作系统,可以使用Eclipse的C++插件及Android开发环境进行开发;如果使用Mac系统,可以使用Xcode进行开发。当然,如果想要编译出相应平台运行的游戏包,需要相应的开发环境,比如编译出Android操作系统上的APK(Android Package),就需要在Android的开发环境里进行编译(这些内容会在第2章介绍),但是代码无须重新修改,这就为开发提供了便捷性和灵活性,这点与使用Cocos2D-iPhone相比,只是使用Xcode开发环境有所不同。

Cocos2D-X的另一个利好优势就是它的主力开发团队在中国,这就为中国的开发者提供了不少便利,关于Cocos2D-X的中文资料和网站也比较多,而且目前Cocos2D的引擎分支的主力开发者也转入了Cocos2D-X开发,这意味着Cocos2D-X将取代Cocos2D-iPhone成为最重要的Cocos2D分支。

2012年6月,Cocos2D团队决定开放Wiki(夏威夷语wee kee wee kee,是一种多人协作的写作工具),只要是Cocos2D-X.org注册用户,就可以编辑、修改除了首页概述之外的所有Wiki页,也可以自己新建条目!按照Wikipedia(维基百科)的规则,没有人工审核,修改立刻生效,进而可以更加丰富Cocos2D-X的文档和参考资料。

2013年年中,Cocos2D-X官方网站正式改版,保持了在3月公布的代码仓库功能,代码仓库包括了很多Cocos2D-X的示例和工具,更方便开发者的查找,该页面截图如图1-13所示。除此之外,国内著名编程技术网站CSDN也开设了Cocos2D-X的页面。

图1-13Cocos2D-X代码仓库

Cocos2D-X之所以能在移动平台游戏开发上有今天的地位,很大程度源于其开源性和引擎团队不断地根据市场情况对引擎进行改造。随着手机性能的提高,3D游戏将逐渐占有更主要的地位,Cocos2D-X的3D扩展被提上日程,目前还处在“可用”但不易用的阶段,触控科技的“捕鱼达人”团队在“捕鱼达人3”的开发中也采用了这个技术,相信与Cocos2D-X和CocoStudio一样,随着具体项目的应用,其3D功能将越来越完善,未来的Cocos2D-X可以带来更绚丽的游戏效果。

1.4本章小结

本章介绍Cocos2D和Cocos2D-X的由来、特征和应用,你需要了解Cocos2D的历史和它的各个分支的由来,以及Cocos2D框架和Cocos2D-X的特点及使用,为后面的章节作准备。从第2章开始,将带领大家逐渐走入Cocos2D-X的奇妙世界。

第2章搭建跨平台的开发环境

所谓“工欲善其事,必先利其器”。学习Cocos2D-X的开发技巧,首先从搭建跨平台开发环境开始。

目前,Cocos2D-X 3.0版本在常用的Windows和Mac系统上都可以开发,但是需要说明的是,Windows上是无法进行iOS开发的,所以如果需要生成可以在iOS上运行的程序,Mac系统是必需的,另外Android系统的开发工具是同时支持Windows和Mac系统的。一个完整的开发环境包括开发、编译、链接、运行和调试等几个部分,所以需要相应的开发环境,比如Win32环境下的VS(Visual Studio),Android的开发环境Eclipse和Android SDK等,iOS则需要Xcode环境,然后使用Cocos2D-X的模板编译出相应环境的软件包。

一般情况下,使用Cocos2D-X的开发流程是:首先在VS或者是Xcode进行开发调试,之后分别在另外两个平台的开发环境中编译生成相应的软件包,如果使用脚本开发,一般是在文本编辑器编辑代码,然后再用VS或者是Xcode运行。2014年4月底,Cocos2D-X引擎团队发布了基于Eclipse的脚本调试工具Cocos代码集成编辑环境,可以支持脚本语言的断点添加等。

本章首先介绍安装引擎需要配置的环境,然后介绍新的Cocos代码集成编辑环境,最后介绍不同平台下的编译环境以及从程序入口讲解如何适配不同屏幕大小等,下面我们就开始搭建跨平台的开发环境。

2.1Cocos2D-X的安装和配置

曾经在Cocos2D-X 2.0时代,就有人提出这样的问题,“如何安装Cocos2D-X”,那时来看,提出这种问题应该是还不了解Cocos2D-X是什么,Cocos2D-X是一套程序框架,本身就是代码,其实本质上是不需要任何安装过程的,但是在3.0版本中由于Cocos2D-X提供了很多方便我们操作的Python脚本,这些脚本简化了操作,但是需要配置一些东西来确保脚本的运行,所以这一节可以理解为介绍“如何安装Cocos2D-X”。但实际上,它是帮助你进行相关工具需要的配置,本节在介绍这些工具运行的同时,也会讲解这些工具实际为你做了些什么。

2.1.1Cocos2D-X的运行编译环境

由于Cocos2D-X是跨平台的,因此它需要的运行环境也是分跨平台介绍的。

Android 2.3版本或者以上。

iOS 5.0版本或者以上。

OS X(Mac)10.7版本或者以上。

Linux Ubuntu 12.04或以上。

Windows XP或者以上。

编译环境需要Xcode 4.6及以上(iOS或Mac),GCC 4.7及以上或者是Visual Studio 2012及以上。

2.1.2需要安装或配置的工具

首先需要下载Cocos2D-X引擎,下载地址为http://www.Cocos2D-X.org/download,本书成书之时的最新版本为3.0。

然后是配置Python环境,需要2.7.3版本。为什么需要Python环境,这是为了让开发工具可以跨平台,很多功能都是用Python脚本开发的,比如创建跨平台项目,Windows需要到Python官网下载,在“我的电脑/系统属性/高级/环境变量/系统变量”中配置Python环境变量。在PATH的值后面追加“;c:\python”(python的安装路径,和你安装时设置的路径相关,记得加上分号“;”),与前面的值分隔开,上述环境变量设置成功之后,就可以在命令行直接使用Python命令,或执行“python *.py”运行Python脚本。此时,还是只能通过“python *.py”运行Python脚本,若希望直接运行“*.py”,打开另一个环境变量PATHEXT,在值后面加“;.PY;.PYM”就可以了。

 类似资料: