cocos2d-iphone FAQ

目录

许可证

给cocos2d做贡献

开发人员

疑难解答

 

许可证

我能在闭源的iPhone应用程序中使用cocos2d吗?

是的,可以。

cocos2d-iPhone使用MIT许可。

如果你有任何疑问,请仔细阅读该协议

如果有人购买了我的游戏,我需要给他源代码吗?

你不必要把游戏代码开源,即使有人在App Store里购买了你的游戏。

你的游戏是否开源的决定权在你。

谁在使用cocos2d?

很多公司,从巨型企业例如Zynga和Atari,到小型的游戏工作室都有。

 

给cocos2d做贡献

 我发现一个bug / 我有一个改进的建议。我应该怎么做呢?

请在http://code.google.com/p/cocos2d-iphone/issues/list 新建一个问题跟踪投票。

 你也可以在论坛http://www.cocos2d-iphone.org/forum/forum/2 里提出出这个bug/改进,但请不要忘记新建一个问题跟踪投票。

 如何提交补丁包?

如果你想要贡献代码,请按照下列步骤:

(如果你是Git和/或GitHub新手,你应该先阅读Pro Git,尤其是“Contributing toa project:Small/Large Public Project”一节)

 - 从GitHub下载最新的cocos2d iPhone开发分支:

$ git clonegit://github.com/cocos2d/cocos2d-iphone.git

$ cd cocos2d-iphone

$ git checkout develop

 1.       在最新下载的版本库做修改

2.       在您自己的版本库里提交您的更改

3.       创建一个新的分支

4.       提交新的分支到公共版本库

5.       向用户“cocos2d”发送一个“pullrequest”

6.       在http://code.google.com/p/cocos2d-iphone/issues/list新建一个问题跟踪投票,并把该补丁或者您提交的URL粘贴在上面。

7.       不要忘了描述你的修补程序的用途。

 添加新的特性

新的特征需要:

1.       测试程序(或者几个子测试程序),用来测试新功能

2.       新的类/方法必须要有doxygen注释(用来生成文档)

3.       .m文件应该遵循Objective- C的命名约定

4.       使用Xcode默认缩进。使用制表符代替空格。

5.       使用静态分析器运行你的代码,修复潜在的bug。如果llvm 误报了错误(例如内存泄漏,实际上又没有泄漏),那么把它记录在代码中。

 哪些特性/补丁会被采纳?

 如果你请求合并一个特性或者补丁,而它们正好符合下列要求,那么就会被合并:

  • l        易于使用
  • l        易于扩展
  • l        高效(快速/低内存需求)
  • l        通用
  • l        重构关键组件的补丁可能需要启动新的发布版本才能合并

 另:

  • l        如果你的补丁在下一个发布版本没有被合并,请耐心等待。

 

开发人员

我能在cocos2d里面使用3D对象吗?

能,你可以在cocos2d嵌入一个类似cocos3d一样的3D引擎。

 我能为SDK 3.x, 4.x开发游戏吗?

能,cocos2d和SDK 2.x, 3.x以及4.x兼容。

 我能在iPhone/iPad/Mac上使用cocos2d吗?

能,cocos2d能运行在所有的Apple设备上,包括:

  • l        iPhone / iPod Touch 1代
  • l        iPhone 3G 和 iPod Touch 2代
  • l        iPhone 3GS 和 iPod Touch 3代
  • l        iPhone4 和 iPod Touch 4代 普通和高分辨率模式
  • l        iPad
  • l        iPad 2
  • l        Mac OS X 10.5 and 10.6

 可以使用什么尺寸的纹理?

要考虑两种情况,非压缩和PVRTC压缩纹理。

 对于非压缩纹理,纹理尺寸必须是2的幂次方,3代以及更新的设备支持的纹理尺寸不大于2048,而较老的设备只能使用不大于1024的纹理尺寸。

 所以16×256可以,512×512也可以,但是240×320则不行。

 你仍然可以使用不符合以上规则的图片,但是当心系统是以2的幂次方大小来存储它的。所以,加载240×320大小的图片,实际上会创建256×512大小的纹理。

 在新的设备上(例如iPhone 3GS)支持2048最大纹理尺寸。注意iPhone 3G以及更老的设备支持的最大纹理尺寸只有1024×1024。

 对于PVRTC压缩纹理,其尺寸必须是2的幂次方,并且宽和高必须相同,即是方形的,例如4×4,32×32,256×256,1024×1024。加载到纹理的图片是一种特殊的格式,和GPU里的存储格式非常相近——因此,图片也必须是方形的且边长是2的幂次方。如果你使用了PVRTC压缩纹理,而你的纹理显示的是单一的白色,那么极有可能是你加载的图片不是方形的。

 spritesheet是什么以及为什么要使用它?

spritesheet是组合在一个较大的sprite里的一组sprite。这样做有两个好处:首先,绘制表里所有的sprite都只需要一个drawcall,这将非常高效。其次,是你可以使用不是2的幂次方的纹理而不浪费内存。把很多sprite打包到一个spritesheet已经是被证明是一种最佳做法,请查看sprite一节获取很多知识。

 我可以使用渲染到纹理技术吗?

可以。cocos2d已经有一个专门做这件事情的类 CCRenderTexture。

 我可以使用动态alpha效果,例如lights,steam等等吗?

可以,结合frame buffer对象和channel masking,只在alpha通道绘制以及适当的blendingmode,就可以实现动态alpha效果。它对创建iSteam效果(在图像上面绘制可编辑的steam层),lighting效果(在图像上绘制中间有个实现光照的孔的黑暗层),刮彩票的效果以及形变游戏领域很有帮助。请参考CCRenderTexture 类(从cocos2d v0.81版本开始)以及下列的帖子:

http://groups.google.com/group/cocos2d-iphone-discuss/browse_frm/thread/dab9b84cd5262d80/ed15695bb0cb3af5?lnk=gst&q=scratch+off#ed15695bb0cb3af5

 我如何在项目中加入声音?

cocos2d带了cocosDenshion(cocos2d使用的音频引擎)的项目模板。

 

疑难解答

当我在模拟器上运行时,图片的颜色乱作一团。

 你是在使用基于PPC的平台吗?如果是的话,这是一个已知的问题。另外,请注意PPC平台不支持iPhone开发。

 如何运行这些测试程序?

1.        打开cocos2d Xcode项目

2.        点击:Xcode→View→Customizetoolbar

3.        然后,将Active Target 和 Active Executable拖动到您的顶级项目工具栏。

4.        在这两个下拉菜单中选择你想要运行的测试程序,然后点击Build and Go。

 我的PNG图片在Cocos2d和在Photoshop中显示的不一样,为什么?

如果你的PNG图片不像在Photoshop显示的一样好,那么:

 确保你使用的是32-bit像素格式

[[CCDirector sharedDirector]setPixelFormat:kRGBA8]; // Default is RGB565

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];  // Default is RGBA8888

 如果仍然还有问题,如下:

 

那么你应该知道:

  • l        在设备上,图像预先乘了appha通道(而模拟器上则没有)
  • l        为了正确渲染预先乘了alpha的图像,cocos2d使用了下面的blending函数:

 glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA);

 所以,如果你想要使用其他的blending函数,你应该:

// cocos2d v0.7.x usesGL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA as the blending function for all sprites,

// which is not correct, but if you want toemulate v0.7.x behavior, then:

[sprite setBlendFunc: (ccBlendFunc) { GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA }];

 关于blending函数和预先乘alpha的图像的更多信息,请阅读:

cocos2d中的Premultiplied图片

 如果你的图片是白的…

如果你的图像是经过预乘alpha的,当你修改它的透明组建时它将修改RGB组件。但是如果你想要改变该行为,那么:

[sprite setOpacityModifyRGB:NO];

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值