`
rayln
  • 浏览: 434081 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TexturePack的".pvr.ccz",".plist"精灵优化及注意事项!

 
阅读更多
李华明Himi 原创,转载务必在明显处注明:
【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/465.html

             前几节由于时间紧张,只是将一些遇到的问题拿出来进行分享经验,那么今天抽空写一篇常用的精灵以及精灵常用和注意的一些知识;那么由于cocos2d教程基本很完善,那么今天Himi介绍一些注意点和细节点分享大家;
            首先对于使用过精灵的童鞋很熟悉CCSpriteBatchNode,至少大家都会知道它能优化精灵,但是至于优化原理这里简单说下:
            一般使用精灵CCSprite的时候,都是直接使用[CCLayer* addChild:CCSprite *];,假设我们创建一百个精灵,那么当前的CCLayer会为100个精灵单独绘制;
           如果使用精灵集合-CCSpriteBatchNode的话,直接将集合CCSpriteBatchNode添加CCLayer中即可,即使创建一百个精灵,我们也都是将100个精灵添加到集合中,[CCSpriteBatchNode* addChild:CCSprite];而已;
           两者的区别:
         1.  直接使用CCLayer进行添加精灵,CCLayer上有几个精灵,那么底层就会绘制几次精灵;
                      简单可以理解成底层绘制方式如下:
                      for(int i= 0;i<100;i++){open-draw-close;}
          但是使用集合的话,CCLayer只需要对精灵集合进行一次渲染,
                     简单可以理解成底层绘制方式如下:
                    open-draw(100次绘制)-close
         从以上两种方式可以看出两者的区别了,第二种使用精灵集合省去了99次open和close的过程,从而达到优化作用;
          上次参加iOS第四次开发者大会,cocos2d-x的张哲在演讲中重点拿出了这一点进行讲解,他在ipad上使用两种方式给出的数据如下:
                  在屏幕中绘制3000个精灵,直接使用CCLayer添加精灵的方式,帧数从60下降到不到20帧;
                  同样在屏幕中绘制3000个精灵,使用CCSpriteBatchNode的渲染方式,帧数保持在50帧左右;
          当然Himi也亲自测试过,但是由于真机调试的还没申请下来,所以只能在模拟器上测试,发现同时绘制300个精灵,两种方式帧数一致,无区别;不是因为没差别,而是因为在iOS模拟器中,帧数与屏幕中的精灵数量有关,真机则会很明显的体现两者的区别;

       2.使用CCSpriteBathNode虽然能达到优化,但是要注意一点:
          初始化精灵集合CCSpriteBatchNode的时候会加载一张图片资源(或者pvr文件等),那么限制其精灵集合的子精灵都必须使用集合加载的这张图才行,否则会给出警告;
      
       3.使用CCSpriteBatchNode还要注意一点,因为精灵都存放在集合中,那么这个集合CCSpriteBatchNode中的节点(精灵)都将在同一个z轴上,同一深度上;

       在上一章中介绍过TexturePacker工具的作用,那么这里不介绍如何使用,而是说下主要的两点,一般使用TexturePacker工具都会将很多精灵图片或者动作帧放在一起打包成“.pvr.ccz”、".plist"、“-hd.pvr.ccz”和"-hd.plist"的四个文件,其中两个-hd的是使用工具生成的打包资源的高清版本(940*480)使用的,这个不再强调了;
      至于".pvr.ccz"格式的则是最压缩、最适合iOS的资源文件格式了,那么与".plist"两个文件的使用方式其实也很简单,代码如下:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"XX.plist"];  
    以上代码是将".pvr.ccz"资源包的图进行加载到精灵帧缓存中,一旦加载过后,你就可以任意使用了,比如你将icon.png和himi.png两张图片一起利用工具打包成“.pvr.ccz”、".plist"两个文件后,将两个文件放在项目下(两张图片不需要了),然后使用刚才的代码将资源包加载缓存中,只需要加载plist文件即可,pvr.ccz的不需要加载,但是也需要放在项目下,然后你在创建精灵的时候可以使用以下形式进行创建精灵:

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"himi.png"];  


      通过上面这行代码可以看出,此种创建精灵的方式是利用帧缓存创建的,那么也就是说一旦加载的许多个一样的精灵的时候利用此方式相当优化运行内存,最容易想到的就是创建子弹;
       那么肯定会有童鞋说,那么如果把这资源文件与CCSpriteBathNode结合使用岂不是更嗨皮,没错,可以的,加载的时候只需要将如下创建集合即可:

CCSpriteBatchNode spritesBgNode = [CCSpriteBatchNode batchNodeWithFile:@"xx.pvr.ccz"];  
[CCLayer* addChild:spritesBgNode];      
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"xx.plist"];  

     最后顺便跟大家强调需要重点注意的三点:
     1.使用TexturePacker工具虽然可以对应生成@2x与-hd文件,但是工具会将你导入的所有精灵图的会做作为-hd的资源包生成,而对应的非高清的则是当前图片尺寸缩放一半的资源而已;
     2.如果你项目中需要加载使用一张"himi.png"的图的话,那么在cocos2d引擎开发的项目中,首先会去资源中寻找"himi-hd.png"的图片,如果找不到则会去寻找"himi@2x.png"的图,所以这里一定要注意资源的命名和使用;
    3.在cocos2d 1.0.0的版本中千万不要在使用pvr.ccz与plist文件的时候加上以下代码:

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_Default];  


     4. 在使用TexturePacker工具选取打包成pvr.ccz格式的时候会提示让你加上这么一句代码:

[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];  

   工具原文提示如下:
  

        [CCTexture2D PVRImagesHavePremultipliedAlpha:YES]; 如果在项目中添加了这句话,但是,忘记在TP工具中将倒数第二项打钩,那么你就悲剧了 ;
       打包成pvr格式的不要忘记在TP打包前将TP的倒数第二个选项打钩哦~;
         好了,这篇就到这里,继续忙了。。。。。。
  • 大小: 34 KB
分享到:
评论

相关推荐

    cocos2d-x 开发必备软件 .pvr.ccz转换成png

    在cocos2d-x游戏开发过程中,图像资源的管理和优化是至关重要的,因为它们直接影响到游戏的性能和加载速度。`.pvr.ccz`是一种专为cocos2d-x设计的高效、压缩的纹理格式,它能有效地减少内存占用并提高渲染效率。然而...

    将.pvr.ccz和plist文件还原为多个原图-工具

    标题提到的".pvr.ccz"和"plist"文件是Cocos2dx中常用的两种资源格式,它们在优化游戏性能和减小游戏包大小方面起着关键作用。 .pvr.ccz文件是Cocos2dx中的压缩纹理格式,它由PVRTC(PowerVR Texture Compression)...

    【iOS-Cocos2d游戏开发之二十二 】源码下载

    【iOS-Cocos2d游戏开发之二十二 】CCSpeed实现CCAnimate动画进行时设置慢动作以及设置游戏加减速进行(塔防游戏必备)! http://blog.csdn.net/xiaominghimi/article/details/7009503

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作

    在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其Cocos2d-iPhone版本专为Objective-C编程语言设计。本主题主要关注Cocos2d-iPhone中的“动作”(Actions)机制,这是一个强大的工具,用于创建各种动画效果...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-瞬时动作

    在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,它为开发者提供了丰富的功能和便利的API来创建交互式的游戏。本篇主要关注Cocos2d-iPhone中的动作(Action)系统,特别是瞬时动作(Instant Action)。瞬时...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-速度变化

    在iOS游戏开发中,Cocos2d是一个广泛使用的2D游戏引擎,特别是在Cocos2d-iPhone版本中,它为开发者提供了丰富的功能和强大的性能。本篇主要关注Cocos2d-iPhone中的“动作”(Action)系统,特别是速度变化...

    【iOS-Cocos2d游戏开发】触屏事件处理机制

    本篇文章将详细讲解Cocos2d游戏开发中的触屏事件处理机制,帮助你理解如何利用这个框架来响应用户的触摸操作。 触屏事件处理在iOS游戏开发中至关重要,因为它直接决定了游戏的交互性和用户体验。Cocos2d中的触摸...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-延时动作

    在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其在iOS上的版本称为Cocos2d-iPhone。本知识点主要探讨的是Cocos2d-iPhone中的动作(Action)系统,特别是延时动作(DelayTime)。在Cocos2d中,动作是一种...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-组合动作

    在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,它为开发者提供了丰富的功能和便利的API。本篇文章将深入探讨Cocos2d-iPhone中的“动作(Actions)”和“组合动作(Composite Actions)”,帮助你更好地...

    iOS实例开发源码——iliu-ios-cocos2d-viking-cba07f8.zip

    Cocos2D是一个广泛使用的2D游戏开发框架,它提供了丰富的功能,如动画、物理引擎、精灵、场景管理等,使得开发者能够高效地创建游戏和互动应用。 iOS实例开发源码的探索通常涉及以下几个方面: 1. **Cocos2D框架**...

    ios-cocos2d-objc实现的跑酷游戏.zip

    Cocos2D-Objective-C是Cocos2D游戏引擎的一个版本,专为iOS应用设计,它允许开发者使用Objective-C语言创建2D游戏、图形界面或者其他动态视觉效果。 【描述】提到的"github地址:...

    Cocos2d-x-3.x游戏开发之旅

    Cocos2d-x-3.x游戏开发之旅-钟迪龙著 全新pdf版和附书代码(代码为工程文件,可复制) 附带目录标签

    Cocos2d-x 3.x游戏开发实战pdf含目录

    Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的游戏开发。3.x版本是其发展中的一个重要阶段,引入了多项优化和新特性,旨在提高开发效率和性能。 本书首先会介绍...

    iOS实例开发源码——iOS-Gamer-Cocos2D-86714e3.zip

    《iOS游戏开发实战:基于Cocos2D框架的源码解析》 在移动游戏开发领域,iOS平台以其优秀的用户体验和强大的硬件支持,吸引了无数开发者。本篇将深度探讨一款基于Cocos2D框架的iOS游戏源码,通过分析“iOS-Gamer-...

    iOS游戏应用源代码——iliu-ios-cocos2d-viking-cba07f8.zip

    Cocos2D是一个流行的开源游戏引擎,尤其适用于2D游戏开发。它为开发者提供了丰富的功能,包括场景管理、动画制作、物理引擎支持以及精灵图(Sprite)的处理等。 在iOS平台上,Cocos2D通常与Objective-C或Swift语言...

    12-IOS游戏开发Cocos2d.pdf

    在iOS开发中,Cocos2d-iPhone是一个极具价值的库,它提供了丰富的功能,如精灵管理、图形特效、动画效果、物理引擎和音频处理等,帮助开发者在构建iPhone游戏时提高效率。由于其开源性质,Cocos2d-iPhone可以免费...

    iOS cocos2d游戏开发教程

    ### iOS Cocos2d游戏开发教程:从入门到精通 #### 引言 在苹果的iTunes App Store以及伴随而来的移动设备(如iPhone、iPod touch和iPad)的推动下,开发并销售自己的计算机游戏变得前所未有的容易。尽管这并不意味...

    iOS游戏应用源代码——iOS-Gamer-Cocos2D-86714e3.zip

    该压缩包文件“iOS-Gamer-Cocos2D-86714e3.zip”包含的是一个基于Cocos2D框架开发的iOS游戏应用的源代码。Cocos2D是一款广泛用于创建2D游戏、演示和其他图形交互内容的开源游戏引擎,尤其适合初学者和专业开发者。...

    【iphone游戏开发】iphone-Cocos2d游戏开发

    在本篇关于“【iPhone游戏开发】iPhone-Cocos2d游戏开发”的专题中,我们将深入探讨Cocos2d游戏引擎在iOS平台上的应用,特别是如何使用Cocos2d来实现小鸟眨眼睛的效果。Cocos2d是一款强大的2D游戏开发框架,它为...

    IOS 5 cocos2d游戏开发实战

    《iOS 5 cocos2d游戏开发实战》这本书深入探讨了在iOS 5平台上利用Cocos2d框架进行2D游戏开发的技术与实践。Cocos2d是一款强大的、开源的、跨平台的游戏开发库,尤其适合于创建具有复杂动画效果和交互性的2D游戏。 ...

Global site tag (gtag.js) - Google Analytics