Cocos2d:拥有单层和添加节点是否更好?或者拥有多个层更好?

时间:2011-09-07 08:11:00

标签: cocos2d-iphone

我有这个小游戏,它包括主游戏画面和主屏幕顶部屏幕上显示的相当多的“窗口”。 在大多数情况下,它只是一个窗口[超过屏幕的90%],有时窗口会打开另一个窗口。 现在,我的主屏幕是一个图层,我拥有的每个窗口都是一个CCNode,我在图层中添加和删除。 我的节点上没有使用任何触摸检测。如果我想要一些可触摸的东西,那将是一个CCMenu。 我确实添加了大量的CCSprit,如果有任何关系的话。 我想知道这是一个很好的[表现明智]的方式吗?换句话说,如果有改变我要说的每个窗口作为一个层的背后的理由。

1 个答案:

答案 0 :(得分:4)

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

  1. 触摸检测:使用多个图层可以更轻松地使用利用图层层次结构的触摸检测逻辑,因为cocos2d引擎会根据所有触摸事件将一个接一个的触摸事件传递给图层。层次结构。

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

  3. IMO在使用单层和多层之间没有太大的性能差异,如果你一次在屏幕上有很多精灵,特别是如果有很多重复的精灵,我强烈建议使用CCSpriteBatchNode(以前称为纹理图集或CCSpriteSheet),这是在处理大量精灵时提高游戏性能的recommended cocos2d method,所以我说用sprite批处理单层节点在性能方面更好,然后将具有单个精灵的多个层直接添加到层中。