本文目录
- cocos2d和cocos2dx有什么区别吗
- cocos2dx3.10 怎么导入cocosbuilder
- 如何优化cocos2d程序的内存使用和程序大小
- cocos2d-x与cocoscreator有什么区别
- cocos2d的主要功能
- cocos2dx里面怎么使用cocosbuilder
- 自学cocos2d 游戏开发应该按什么步骤进行
- 如何学习 cocos2d-x
- cocos2dx与cocos2d有什么区别
- cocos2d的介绍
cocos2d和cocos2dx有什么区别吗
cocos2d是OC写的,cocos2dx是c++写的
cocos2d只能在ios下运行,cocos2dx是跨平台的,ios和android平台都可以运行
cocos2d是外国人搞的,cocos2dx是中国人搞的。
cocos2dx是cocos2d的C++写法,但是游戏架构是一样的,都包含了精灵,导演,场景,动作等概念,他们是一脉相承的东西。你可以直接研究cocos2dx,没有什么障碍。虽然是有了cocos2d才有的cocos2dx,但是cocos2dx包含了cocos2d的主要思想,因此可以直接研究cocos2dx。
cocos2dx3.10 怎么导入cocosbuilder
帮你一下吧 首先这个板块是cocos2dx的板块,你这个问题需要到cocosstudio板块提问。 首先你得把cocosstudio下的素材复制到工程resourse下,然后在你的init方法里加入 //加载cocosstudio资源 auto rootNode = CSLoader::createNode(“Login.csb“);...
如何优化cocos2d程序的内存使用和程序大小
避免一个接一个地加载PNG和JPG纹理(他们之间至少等待一帧)
cocos2d里面纹理加载分为两个阶段:1.从图片文件中创建一个UIImage对象。2.以这个创建好的UIImage对象来创建
CCTexture2D对象。这意味着,当一个纹理被加载的时候,在短时候内,它会消耗两倍于它本身内存占用的内存大小。(译注:为什么只是短时间内呢?
因为autoRelease pool和引用计数的关系,临时创建的UIImage对象会被回收。)
当你在一个方法体内,接二连三地加载4个纹理的时候,这个内存问题会变得更加糟糕。因为在这个方法还没结束之前,每一个纹理都会消耗两倍于它本身的内存。
我不是很确定,现在的cocos2d是否仍然如此。或者这种情况是否只适用于手工引用计数管理,或许ARC不会如此呢?我习惯于按顺序加载纹理,但是在加
载下一个纹理之前要等待一帧。这将会使得任何纹理加载的消耗对内存的压力降低。因为等待一帧,引用计数会把临时的UIImage对象释放掉,减少内存压
力。此外,在后续的文章中,如果你想在背景线程中按序加载纹理的话,也可以采用这种方法。
不要使用JPG图片!
cocos2d-iphone使用JPG纹理的时候有一个问题。因为JPG纹理在加载的时候,会实时地转化为PNG格式的纹理。这意味着cocos2d-iphone加载纹理是非常慢的(这里有演示),而且JPG纹理将消耗三倍于本身内存占用大小的内存。
一个2048*2048大小的纹理会消耗16M的内存。当你加载它的时候,在短时间内,它将消耗32MB内存。现在,如果这个图片是JPG格式,你会看到
这个数字会达到48MB,因为额外的UIImage对象的创建。虽然,最终内存都会降到16M,但是,那一个时刻的内存飙高,足以让os杀死你的游戏进
程,造成crash,影响用户体验。
JPG不论在加载速度和内存消耗方面都很差。所以,千万不要使用JPG!
忽视文件图片大小
这种情况,我见到很多。它乍听起来可能觉得有点荒诞,但事实如此,因为它需要关于文件格式的知识,而这些知识并不是每一个程序员都了解的。我经常听到的论断就是“嘿!我的程序不可能有内存警告,我所有的图片资源加起来还不到30MB!”。
怎么说呢,因为图片文件大小和纹理内存占用是两码事。假设他们是帐篷。图片文件就相当于帐篷被装在行李箱。但是,如果你想要使用帐篷的话,它必须被撑起来,被“膨胀”。
图片文件和纹理的关系与此类似。图片文件大多是压缩过的,它们被使用的话必须先解压缩,然后才能会GPU所处理,变成我们熟知的纹理。一个
2048*2048的png图片,采用32位颜色深度编码,那么它在磁盘上占用空间只有2MB。但是,如果变成纹理,它将消耗16MB的内存!
当然,减少纹理占用内存大小是有办法滴。
使用16-bit纹理
最快速地减少纹理内存占用的办法就是把它们作为16位颜色深度的纹理来加载。cocos2d默认的纹理像素格式是32位颜色深度。如果把颜色深度减半,那么内存消耗也就可以减少一半。并且这还会带来渲染效率的提升,大约提高10%。
你可以使用CCTexture2D对象的类方法setDefaultAlphaPixelFormat来更改默认的纹理像素格式,代码如下:
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGB5A1];
[[CCTextureCache sharedTextureCache] addImage:@“ui.png“];
这里有个问题:首先,纹理像素格式的改变会影响后面加载的所有纹理。因此,如果你想后面加载纹理使用不同的像素格式的话,必须再调用此方法,并且重新设置一遍像素格式。
其次,如果你的CCTexture2D设置的像素格式与图片本身的像素格式不匹配的话,就会导致显示严重失真。比如颜色不对,或者透明度不对等等。
有哪些比较有用的纹理像素格式呢?
generate 32-bit textures: kCCTexture2DPixelFormat_RGBA8888 (default)
generate 16-bit textures: kCCTexture2DPixelFormat_RGBA4444
generate 16-bit textures: kCCTexture2DPixelFormat_RGB5A1
generate 16-bit textures: kCCTexture2DPixelFormat_RGB565 (no alpha)
RGBA8888是默认的格式。对于16位的纹理来说,使用RGB565可以获得最佳颜色质量,因为16位全部用来显示颜色:总共有65536总颜色值。
但是,这里有个缺点,除非图片是矩形的,并且没有透明像素。所以RBG565格式比较适合背景图片和一些矩形的用户控件。
RBG5A1格式使用一位颜色来表示alpha通道,因此图片可以拥有透明区域。只是,1位似乎有点不够用,它只能表示32768种可用颜色值。而且图片
要么只能全部是透明像素,或者全部是不透明的像素。因为一位的alpha通道的缘故,所以没有中间值。但是你可以使用fade
in/out动作来改变纹理的opacity属性。
如果你的图片包含有半透明的区域,那么RBGA4444格式很有用。它允许每一个像素值有127个alpha值,因此透明效率与RGBA8888格式的纹理差别不是很大。但是,由于颜色总量减少至4096,所以,RBGA4444是16位图片格式里面颜色质量最差的。
现在,你可以得到16位纹理的不足之处了:它由于颜色总量的减少,有一些图片显示起来可能会失真,而且可能会产生“梯度”。
使16位纹理看起来更棒
幸运的是,我们有TexturePacker.(后面简称TP)
TP有一个特性叫做“抖动”,它可以使得原本由于颜色数量减少而产生的失真问题得到改善。(TP里面有很多抖动算法,关于这些算法,读者可以参考我翻译的另一篇文章)。
特别是在拥有Retina显示的像素密度下,你几乎看不出16位与32位的纹理之间的显示差别。当然,前提是你需要采用“抖动”算法。
cocos2d默认的颜色深度将会把所有的纹理都渲染到16位的color
framebuffer里面,然后再显示到你的设备屏幕上面。既然这样,我们为什么不把所有的纹理的格式都弄成16位呢,32位又有什么用呢?反正它本来
就会渲染到16位的framebuffer上去的。这个问题有点太底层了,我不想深挖下去,而且我也不适合解释这个问题。(译者:哈哈,知之为知之,不知
为不知)
使用NPOT纹理
NOPT是“non power of two”的缩写,译作“不是2的幂”。NPOT stands for “non power of
two”. 在cocos2d1.x的时候,你必须在ccConfig.h文件中开启对NPOT的支持,但是,cocos2d
2.x就不需要了,它默认是支持NPOT的。所有3代(iphone 3GS)以后的ios设置都支持cocos2d 2.x(因为它们支持OpenGL
ES2.0),所以也都能支持NPOT纹理。
如果纹理图集(texture
atlas)使用NPOT的纹理,它将有一个具大的优势:它允许TP更好地压缩纹理。因此,我们会更少地浪费纹理图集的空白区域。而且,这样的纹理在加载
的时候,会少使用1%到49%左右的内存。而且你可以使用TP强制生成NPOT的纹理。(你只需要勾选“allow free size”即可)
为什么要关心NPOT呢?因为苹果的OpenGL驱动有一个bug,导致如果使用POT的纹理,则会产生额外33%的内存消耗。
默认使用PVR格式的纹理
TP让你可以创建PVR格式的纹理。除了PVR纹理支持NPOT外,它们不仅可以不是2的幂,而且还可以不是方形的。
PVR是最灵活的纹理文件格式。除了支持标准的未压缩的RGB图片格式外,支持有损压缩的pvrtc格式。另外,未压缩的pvr格式的纹理的内存消耗非常
地低。不像png图片那样要消耗2倍于本身内存占用大小的内存,pvr格式只需要消耗纹理本身内存大小再加上一点点处理该图片格式的内存大小。
pvr格式的一个缺点就是,你不能在Mac上面打开查看。但是,如果你安装了TP的话,就可以使用TP自带的pvr图片浏览器来浏览pvr格式的图片了。(强烈建议大家购买TP,支持TP,不要再盗版了)
使用PVR格式的文件几乎没有缺点。此外,它还可以极大地提高加载速度,后面我会解释到。
使用pvr.ccz文件格式
在三种可选用的pvr文件格式中,优先选择pvr.ccz格式。它是专门为cocos2d和TP设计的。在TP里面,这是它生成的最小的pvr文件。而且pvr.ccz格式比其它任何文件格式的加载速度都要快。
当在cocos2d里面使用pvr格式的纹理时,只使用pvr.ccz格式,不要使用其它格式!因为它加载速度超快,而且加载的时候使用更少的内存!
当视觉察觉不出来的时候,可以考虑使用PVRTC压缩
PVR纹理支持PVRTC纹理压缩格式。它主要是采用的有损压缩。如果拿PVRTC图片与JPG图片作对比的话,它只有JPG图片中等质量,但是,最大的好处是可以不用在内存里面解压缩纹理。
这里把32位的png图片(左边)与最佳质量的PVRTC4(4位)图片(点击图片查看完整的大小)作对比:
注意,在一些高对比度的地方,明显有一些瑕疵。有颜色梯度的地方看起来还好一点。
PVRTC肯定不是大部分游戏想要采用的纹理格式。但是,它们对于粒子效果来说,非常适用。因为那些小的粒子在不停地移动、旋转、缩放,所以你很难看出一些视觉瑕疵。
PVRTC压缩图片格式
TP提供的PVR格式不仅有上面两种,还包括TC2和TC4这两种没有alpha通道的格式。
这里的alpha和16位纹理的alpha是一样的。没有alpha通道意味着图片里面没有透明像素,但是,更多的颜色位会用来表示颜色,那么颜色质量看起来也会更好一些。
有时候,PVRTC图片格式指的是使用4位或者2位颜色值 ,但是,并不完全是那样。PVRTC图片格式可以编码更多的颜色值。
预先加载所有的纹理
就像标题所说,尽你所能,一定要预先加载所有的纹理。如果你的所有的纹理加起来不超过80MB内存消耗的话(指的是拥有Retina显示的设备,非Retina的减半考虑),你可以在第一个loading场景的时候就全部加载进来。
这样做最大的好处在于,你的游戏体验会表现得非常平滑,而且你不需要再担心资源的加载和卸载问题了。
这样也使得你可以让每一个纹理都使用合适的纹理像素格式,而且可以更方便地找出其它与纹理无关的内存问题。因为如果与纹理有关,那么在第一次加载所有的纹
理的时候,这个问题就会暴露出来的。如果所有的纹理都加载完毕,这时候再出现内存问题,那么肯定就与纹理无关了,而是其它的问题了。
如果你知道问题与纹理无关的话,那么你查找剩下的内存问题将会变得更加简单。而且你避免了前面说的这种情况:当2048*2048的纹理加载的时候,它本
来只需要消耗16MB内存,但是短时间会冲到32MB内存。后面会提出一种方法来解决“间歇性内存飙高”(“译者发明滴”)的方法。(译者:希望下次开发
者的对话中“间歇性内存飙高”的说法会出现,呵呵)
按照纹理size从大到小的顺序加载纹理
由于加载纹理时额外的内存消耗问题,所以,采用按纹理size从大到小的方式来加载纹理是一个最佳实践。
假设,你有一个占内存16MB的纹理和四个占用内存4MB的纹理。如果你首先加载4MB的纹理,这个程序将会使用16MB的内存,而当它加载第四张纹理的
时候,短时间内会飙到20MB。这时,你要加载16MB的那个纹理了,内存会马上飙到48MB(4*4 + 16*2),然后再降到32MB(4*4 +
16)。
但是,反过来,你先加载16MB的纹理,然后短时候内飙到32MB。然后又降到16MB。这时候,你再依次加载剩下的4个4MB的,这时,最多会彪到(4*3 + 4*2 + 16=36)MB。
在这两种情况下,内存的峰值使用相差12MB,要知道,可能就是这12MB会断送你的游戏进程的小命哦!
避免在收到内存警告消息的时候清除缓存
我有时候看到了一种奇怪的“自己开枪打自己的脚”的行为:纹理已经全部在Loading场景里面加载完毕了,这时候,内存警告发生了,然后cocos2d就会把没有使用的纹理从缓存中释放掉。
听起来不错,没有使用到的纹理都被释放掉了,但是!。。。
你刚刚把所有的纹理都加载进来,还没有进入任何一个场景中(此时所有的纹理都被当作“unused”),但是马上被全部从texture
cache中移除出去。可是,你又需要在其它场景中使用它们。怎么办?你需要接着判断,如果有纹理没有加载,就继续加载。但是,一加载,由于“间歇性内存
飙高”,又马上收到了内存警告,再释放,再判断,再加载。。。。
我的天,这是一个死循环啊!这也能解释为什么有些童鞋,在loading场景完了之后进入下一个场景 的时候很卡的原因了。
现在,当我收到内存警告的时候,我的做法是----什么也不做。内存警告仍然在发生,但是,它只是在程序刚开始加载的时候。我知道这是为什么,因为“间歇
性内存飙高”嘛,所以,我不去管它。(但是,如果是游戏过程中再收到内存警告,你就要注意了,因为这时候可能你有内存泄漏了!!!)
我有时候会想办法改善一下,通过移除掉一些不使用的纹理和一些只有在很特殊的场景才会使用的图片(比如settings界面,玩家是不经常访问的)。然
后,不管什么时候,当我需要某张图片的时候,我会首先检查一下该sprite
frame是否在cache中,如果没有就加载。你会在后面看到具体的做法。
理解在什么时候、在哪里去清除缓存
不要随机清除缓存,也可以心想着释放一些内存而去移除没有使用的纹理。那不是好的代码设计。有时候,它甚至会增加加载次数,并多次引发“间歇内存飙高”。分析你的程序的内存使用,看看内存里面到底有什么,以及什么应该被清除,然后只清除该清除的。
你可以使用dumpCachedTextureInfo方法来观察哪些纹理被缓存了:
[[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];
-cocos2d
cocos2d-x与cocoscreator有什么区别
cocos2d-x与cocoscreator的区别如下:
1、性能不同
COCOS 2DX更加可控,并且使用C ++开发,因此性能好。
COCOS CREATOR的界面更加简洁,学习更简单,应用UNITY的操作方法更符合潮流。但是由于使用JS作为开发语言,因此性能差。
2、用途不同
COCOS 2DX可以制作一些相对较大的游戏。缺点是学习起来比较费力。 COCOS CREATOR主要用于小型游戏,不适合制作太大的游戏。
COCOS 2DX是由cocos2d用C++编写的,但是游戏架构是相同的。它们都包含精灵,导演,场景,动作等概念。
3、引擎不同
一般来说,COCOS指的是COCOS 2DX。 COCOS CREATOR是使用UNITY 3D操作方法开发的另一种引擎。尽管名称也包括COCOS,但和COCOS 2DX是两个不同的引擎。
cocos2d的主要功能
流程控制(Flow control):非常容易地管理不同场景(scenes)之间的流程控制
精灵(Sprites):快速而方便的精灵
动作(Actions):告诉精灵们该做什么。可组合的动作如移动(move)、旋转(rotate)和缩放(scale)等更多
特效(Effects):特效包括波浪(waves)、旋转(twirl)和透镜(lens)等更多
平面地图(Tiled Maps):支持包括矩形和六边形平面地图
转换(Transitions):从一个场景移动到另外一个不同风格的场景
菜单(Menus):创建内部菜单
文本渲染(Text Rendering):支持标签和HTML标签动作
文档(Documents):编程指南 + API参考 + 视频教学 + 很多教你如何使用的简单测试例子
BSD许可:尽管用就是了
基于Pyglet:没有外部的依赖
基于OpenGL:支持硬件加速-c
cocos2dx里面怎么使用cocosbuilder
2012年过年年回来一直没有可以用于写博客的新收获,以致于担心2013年2月份的博客数量能否达到4篇,以保证我博客头像下锃亮的”恒“。新公司可以直接上网是我这三个月来博客数量倍增的主要原因。好了不多说了,回归正题。
这里主要是一些除CocosBuilder本身Document之外的一些使用教程。CocosBuilder的基本使用这里面是不会提及的,因为CocosBuilder本身就带了此时市面上最全的说明文档。不习惯看说明文档的童鞋们请硬着头皮看一下,顺便当做英语六级补习课。本文的使用的CocosBuilder版本是CocosBuilder-2.1,基于的Cocos2d-x版本是Cocos2d-x 2.0.4。
本教程将使用CocosBuilder创建Project时自带的HelloCocosBuilder.ccb作为素材,在Cocos2d-x 2.0.4中加载并呈现出来。
首先创建一个Cocos2dx的一个模版项目(后面称之为A项目)
然后使用CocosBuilder在A项目资源文件夹下面创建一个Project,然后点击【File】-》【Publish】。这样我们就可以在A项目的资源文件夹下找到HelloCocosBuilder.ccbi。
将HelloCocosBuilder.ccbi加入到A项目的xCode项目管理中。将HelloCocosBuilder.ccbi拖入到xCode中,一般放入Resouces文件下面。特别注意,在弹出的提示框中,一定要勾选想要添加到的target(下面附带截图)。
这点很重要,很多windows开发人员(或许就是我)总认为资源不必加入项目文件中(即开发环境中项目文件列表),程序是能够搜索到的,但是xCode开发ios程序时,xCode会把需要的文件拷贝到ios device目录中,如果你不把需要的文件加入项目文件中,那么xCode不会帮你拷贝,到时候生成的app中就没有这个资源。
打开AppDelegate.cpp文件,修改applicationDidFinishLaunching函数。
[cpp] view plaincopy
由于HelloCocosBuilder.ccbi中没有涉及任何外部资源,所以无须添加外部资源到项目文件中。
Cocos2d-x中CocosBuilder文件的加载没有Cocos2d版本的那么好,没有提供一个便利函数,一句话加载,以致于新手需要上网所搜如何加载。上面的加载代码也是我从网上搜到的,然后自己稍微改的精简一些。具体含义我也没有深究,很是好奇的童鞋可以自己探索一下。
bool AppDelegate::applicationDidFinishLaunching()
{
// initialize director
CCDirector *pDirector = CCDirector::sharedDirector();
pDirector-》setOpenGLView(CCEGLView::sharedOpenGLView());
// turn on display FPS
pDirector-》setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don’t call this
pDirector-》setAnimationInterval(1.0 / 60);
//read ccbi file
CCBReader* pReader = new CCBReader( CCNodeLoaderLibrary::sharedCCNodeLoaderLibrary() );
pReader-》autorelease();
pDirector-》runWithScene( pReader-》createSceneWithNodeGraphFromFile( “HelloCocosBuilder.ccbi“ ) );
return true;
}
【Command】+R,运行程序就能看到Hello CocosBuilder在模拟器中央。
虽然这个教程很简单,但是本人断断续续也搞了一天多,主要出错在于上面的第三步,以及自己建立的CocosBuilder Project文件本身有问题。以后我会在项目中不断挖掘CocosBuilder的用处,然后贴出系列教程。
-cocos2d
自学cocos2d 游戏开发应该按什么步骤进行
你可以先去【绘学霸】网站找“游戏特效/unity3D”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=305,306&zdhhr-11y17r-1579557009261025980
想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。
自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。
王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】:
www.cgwang.com/course/gecoursemobilecheck/?zdhhr-11y17r-1579557009261025980
在“游戏特效/unity3D”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。
大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
-c
如何学习 cocos2d-x
刚巧我也是从AS3转到了cocos2d-x,说说我的经验吧。
一、 cocos2d-x 部分
1.1 技术选型
从第三个手游开始,我实在被Adobe的ANE和国内的小平台折腾得没了脾气,决定转到cocos2d-x。在选择哪种语言绑定的时候纠结了很久,最后力排众议选了 lua:Cocos2d-x script language binding:Lua or Javascript? 。cocos2d-x 2.x 的lua绑定做得并不好,于是我选择了 quick-cocos2d-x 。
1.2 学习 C++
《C++ Primer》 是不错的入门书籍,建议看第五版,我写过一篇 C++Primer 第4版和第5版比较 。学习期间建议画一些思维导图帮助理解和整理思路。例如这个(不完整):
1.3 学习DEMO和熟悉开发平台。
编译 cocos2d-x 自带的 TestCPP 项目,全部跑一遍。熟悉 cocos2d-x API 的用法。记得生成文档,建议每个API的功能都浏览一遍。
在学习DEMO的过程中,你还必须熟悉自己开发平台的IDE,例如Windows上必须熟悉 Visual Studio,而OS X上必须熟悉xcode,Linux平台上就熟悉Eclipse+CDT吧。
注意,quick-cocos2d-x 是不支持Linux开发平台的。
1.4 了解引擎的文件夹结构
基于 cocos2d-x 源码生成的文档并不怎么详细,许多功能必须看源码。但这个阶段,我不建议纠结源码太深,倒是可以纠结一下 cocos2d-x 的文件夹结构,看看各个类放在什么地方,找一找常见的哪些宏和常量以及枚举定义在什么地方,这花不了多少时间,但能让你对cocos2d-x有更深刻的了解,同时给你很强的成就感。这种成就感冲淡了你面对大量源码时候的无力感,让你能够继续前行。
下面是我的分析:
1.5 重复上面的第3步:再次学习DEMO
这时候看DEMO可能会轻松不少,但是你会有更多的问题去纠结。例如多分辨率支持?例如坐标系统?例如绘图功能?例如层级管理系统?例如事件传递系统?等等等等……这时候可以去Google(注意不要用百毒和其他搜索引擎)找文档看了。我推荐一些我看过的不错的文档和博客:
Cocos2d-x 多分辨率适配完全解析
Cocos2d-x官方中文文档 v2.x
子龙山人 – 博客园
红孩儿的游戏编程之路
Cocos2D | iOS Development Tips & Tricks by BiOM
Ray Wenderlich
Cocos2d-x | Cross Platform Open Source 2D Game Engine
许多博客都是极好的。红孩儿 写了许多源码分析,每一句源码都加了详细注释。虽然我不太认同他这种吃力不讨好的方法,但这对于新手来说确实是有很大帮助的。
另外在 Stack Overflow 你能找到绝大部分问题的答案。当然,许多问题是针对 cocos2d 而非 cocos2d-x 的,不过用法相同,照看不误。许多优秀的文章都是基于 cocos2d 的,所以,不要介意,可以先花半天时间熟悉 OC 的语法,能看懂即可。
暂时不要买中文书。我曾经花3天时间看完了 《Cocos2D-X游戏开发技术精解》 和 《cocos2d-x手机游戏开发–跨iOS、Android和沃Phone平台》 ,发现作者其实就是来赚稿费的。
忘了广告了,我的博客(cocos2d-x | zrong’s Blog)也有一些cocos2d-x内容,欢迎来喷。
1.6 熟悉工具集
现在你应该对周边工具感兴趣了。例如帧动画使用什么制作?BMFont使用什么制作?骨骼动画呢?plist文件怎么编辑?碎图用什么工具拼合?有些项目上,你有许多选择,也可能没得选。去Google吧,如果遇到选择上的问题,欢迎找我讨论。
二、 quick-cocos2d-x 部分
2.1 现在就到lua时间了
请认真读完 《Lua程序设计(第2版) 》 第一、二、三部分。第四部分可暂时不读。
2.2 熟悉 quick-cocos2d-x 的文件夹结构
相信有了上面 cocos2d-x 的基础,这个应该不难理解。
2.3 跑完 quick-cocos2d-x 自带的所有sample
在这期间,熟悉 framework 中的所有封装。可以参考 quick网站 和 quick wiki 。
2.4 学习导出API给Lua使用
导出 C/C++ API 给 Lua 使用
三、学习 OpenGL ES
熟悉Lua部分之后,作为一个有志于成为程序员的码农,依然要回到C++来,这里才是 cocos2d-x 的本质。
cocos2d-x 使用 OpenGL ES 进行渲染的,如果要对 cocos2d-x 的渲染层进行任何形式的扩展,你完全避不开 OpenGL ES。
既然逃不开,那就对她说,请张开双腿,我要上。
3.1 阅读 OpenGL ES 2.0 Programming Guide
下面是这本书的官网,目前已经出了 OpenGL ES 3.0 版本,cocos2d-x 使用的是2.0。
-cocos2d
cocos2dx与cocos2d有什么区别
那就不要想了,肯定是cocos2dx,因为cocos2d只能开发ios游戏,还不能被移植到android,因为cocos2d使用的是OC语言的缘故,cocos2d-x就不一样了,它是用c++写的,可以很好的实现跨平台。这两个东西的优点是一样的,你不用使用OpenGL的代码就可以完成很好的动画效果,并且学起来也很容易,到处都是这方面的论坛和博客,你放心的用好了。缺点我觉得要是想实现跨平台,需要再网络请求这方面下点功夫,以前我这样做的时候就花了一些时间,跨平台的网络请求库不好找,以前用的cURL。你可以试试看。
cocos2dx是对cocos2d的移植,里面的函数基本类似,但是cocos2dx是c++写法,cocos2d是OC的写法,所以写起来代码格式还是差距很大的。再操作界面上来是相同,都是有导演,场景,层,精灵这些基本概念,因此是一个原理,只要这些概念通了就好了,其他的就是写法上的问题。
-c
cocos2d的介绍
cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。可以让你在创建自己的多平台游戏时节省很多的时间。Cocos2D也拥有几个主要版本,包括Cocos2D-iPhone、Cocos2D-X,以及被社区普遍看好的Cocos2D-HTML5和JavaScript bindings for Cocos2D-X。同时也拥有了非常优秀的编辑器(独立编辑器),例如SpriteSheet Editors、Particle Editors 、Font Editors 、 Tilemap Editors。另外,2012年发布的CocoStudio工具集是开源游戏引擎Cocos2d-x开发团队官方推出的游戏开发工具,目前已经进入稳定版。CocoStudio吸取了他们自己在游戏制作中的经验,为移动游戏开发者和团队量身定做,旨在降低游戏开发的门槛,提高开发效率,同时也为Cocos2D-X的进一步发展打下基础。-cocos2d