【问题标题】:cocos2d scenes vs layerscocos2d 场景与图层
【发布时间】:2012-03-14 17:28:30
【问题描述】:

我正在创建一个不使用传统菜单系统的游戏——你有不同的场景(如设置、关于、新游戏等),然后你只需根据按钮按下或类似的东西来改变场景- 但是菜单是内置在实际游戏中的(按钮放置在游戏层上)。 当按下按钮时,会根据游戏逻辑出现不同的图层(可以填满整个屏幕)。这个想法是让游戏层始终存在(因此游戏状态永远不会改变,即使您更改了某些参数,游戏层也不需要重新初始化)。图层或多或少包含按钮和您可以滚动浏览的不同精灵列表。

我最担心的是,由于屏幕上的图像过多,性能/内存会下降(游戏层最多可以包含 100 个精灵并且始终存在 - 如果游戏层前面有一层,则游戏层被暂停和隐藏)。

游戏场景设置:

  • 游戏层
  • 菜单层
  • 动态层(按下某个按钮时添加的层)

如果我将动态图层更改为场景,会有什么不同吗? (我不会创建一个新层,而是创建一个新场景并将其推送到场景堆栈上,而不会杀死游戏层)。这两种方法是相同的还是有任何关键区别(内存/性能方面)?

【问题讨论】:

    标签: ios cocos2d-iphone


    【解决方案1】:

    我建议在这种情况下使用 pushScene/popScene。省去了很多麻烦,比如背景场景会自动暂停。

    内存消耗应该差不多。游戏使用的几乎所有内存都是纹理内存和音频缓冲区,所以不要关心内存中有多少精灵,而是它们将使用多少不同的纹理。

    【讨论】:

    • 动态层显示大约 100 个不同的纹理/图像 + 游戏层中的纹理(比如说 20 个) - 就像您在游戏中有一个图像选择器,它会列出您设备上的所有图像。这就是为什么我要问使用哪一个。使用场景确实有暂停游戏等的优势,但你可以从活动场景中操作暂停的场景(调用它的函数)吗?
    【解决方案2】:

    不,您应该为场景使用一层。 并使用 ccsprite 代替子层。 如果您将所有场景放入 shareDirector。这将是缓慢且可能的崩溃。

    【讨论】:

    • 堆栈中最多有 2 个场景 - 一个带有游戏的场景,最重要的是一个动态场景。
    猜你喜欢
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多