Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios cocos2d场景与层_Ios_Cocos2d Iphone - Fatal编程技术网

Ios cocos2d场景与层

Ios cocos2d场景与层,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我正在创建一个不使用传统菜单系统的游戏——你有不同的场景(如设置、关于、新游戏等),然后你只需按一个按钮或类似的东西就可以更改场景——但菜单是内置在实际游戏中的(按钮放在游戏层上)。 当按下一个按钮时,会根据游戏逻辑出现不同的层(可以填满整个屏幕)。这样做的目的是让游戏层始终存在(因此游戏状态永远不会改变,即使更改某些参数,游戏层也不需要重新初始化)。图层或多或少包含按钮和一系列你可以滚动浏览的不同精灵 我最担心的是,由于屏幕上有许多图像,性能/内存会下降(游戏层最多可以包含100个精灵,并且始

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

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

游戏场景设置:

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

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

在这种情况下,我建议使用pushScene/popScene。它为您节省了很多麻烦,例如背景场景将自动暂停


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

不,一个场景应该使用一层。 并使用ccsprite代替子层。
如果你把所有的场景都放到shareDirector中。它将缓慢且可能崩溃。

动态层显示大约100种不同的纹理/图像+游戏层中的纹理(比如说20)-就像游戏中有一个图像选择器,它将列出设备上的所有图像。这就是为什么我要问用哪一个。使用场景确实有暂停游戏的优势,但是你能从活动场景中操纵暂停的场景吗(调用其功能)?堆栈中最多有两个场景-一个是游戏场景,另一个是动态场景。