Cocos2d iphone Cocos2d:最好是单层并添加节点,还是多层更好?

Cocos2d iphone Cocos2d:最好是单层并添加节点,还是多层更好?,cocos2d-iphone,Cocos2d Iphone,我有一个我的小游戏,它由主游戏屏幕和在主屏幕顶部的屏幕上出现的许多“窗口”组成。 在大多数情况下,它只是一个窗口(占屏幕的90%以上),有时窗口会打开另一个窗口。 现在,我的主屏幕是一个层,我的每个窗口都是一个我从层中添加和删除的CCNode。 我没有在我的节点上使用任何触摸检测。如果我想要可触摸的东西,它将是CCMenu。 如果有什么关系的话,我确实添加了很多ccsprite。 我想知道这是否是一个好的[性能方面的]方式?或者换句话说,如果改变我必须说的内容背后有一个基本原理,那就是将每个窗口

我有一个我的小游戏,它由主游戏屏幕和在主屏幕顶部的屏幕上出现的许多“窗口”组成。 在大多数情况下,它只是一个窗口(占屏幕的90%以上),有时窗口会打开另一个窗口。 现在,我的主屏幕是一个层,我的每个窗口都是一个我从层中添加和删除的CCNode。 我没有在我的节点上使用任何触摸检测。如果我想要可触摸的东西,它将是CCMenu。 如果有什么关系的话,我确实添加了很多ccsprite。
我想知道这是否是一个好的[性能方面的]方式?或者换句话说,如果改变我必须说的内容背后有一个基本原理,那就是将每个窗口作为一个层。

据我所知,使用多层而不是单层的两个最重要的好处是触摸检测和z排序:

  • 触摸检测:使用多个层可以更容易地使用利用层层次结构的触摸检测逻辑,因为cocos2d引擎会根据层次结构将任何触摸事件一个接一个地传递给层

  • z-排序:对于某些精灵总是在其他精灵前面的场景,使用多层可以更容易地执行z-排序,而不必在使用单层时修改zOrder参数


  • 在我看来,使用单层和多层在性能方面并没有太大区别,但是如果一次屏幕上有很多精灵,特别是如果有很多重复精灵,我强烈建议使用
    CCSpriteBatchNode
    (以前称为纹理图集或CCSpriteSheet)这是在处理大量精灵时提高游戏性能的关键,因此我想说,具有精灵批处理节点的单层在性能上优于直接添加单个精灵的多层。

    据我所知,使用多层而不是单层的两个最重要的好处是触摸检测和z排序:

  • 触摸检测:使用多个层可以更容易地使用利用层层次结构的触摸检测逻辑,因为cocos2d引擎会根据层次结构将任何触摸事件一个接一个地传递给层

  • z-排序:对于某些精灵总是在其他精灵前面的场景,使用多层可以更容易地执行z-排序,而不必在使用单层时修改zOrder参数

  • 在我看来,使用单层和多层在性能方面并没有太大区别,但是如果一次屏幕上有很多精灵,特别是如果有很多重复精灵,我强烈建议使用
    CCSpriteBatchNode
    (以前称为纹理图集或CCSpriteSheet)这是在处理大量精灵时提高游戏性能的关键,因此我想说,具有精灵批处理节点的单层在性能上优于直接添加单个精灵的多层