1

我在 Cocos2d 中有一个游戏,它有一个主场景(游戏场景)和一个转到“配置”场景的按钮。当用户单击主场景中的配置按钮时,我使用 pushScene 进入“配置”场景。我使用 pushScene 的原因是允许用户从他离开的地方继续游戏。

在“配置”场景中有两个选项:“取消”和“确定”。如果用户点击“取消”,我会使用 popScene,游戏会从它离开的地方继续。如果用户点击“确定”,我会使用 replaceScene,因为我希望游戏以新配置从头开始。

所以,当用户点击“确定”时,我知道“配置”场景被新的游戏场景替换了,但是旧的游戏场景也被替换了吗?否则,我是在做正确的事情还是应该实施另一种方法来让游戏场景知道它应该恢复还是重新启动。

我想通过累积未替换的场景来确保我不会泄漏内存。

4

1 回答 1

2

replaceScene 方法按照它所说的去做。它替换了当前场景。如果您有 10 个场景相互叠加,它将替换第 10 个场景,并且所有之前的场景都将保留。

这也是我不推荐使用 pushScene 的原因之一。很容易忘记场景可能被推送多于弹出的情况。另一个原因是 popScene 不能使用过渡进行动画处理。

顺便说一句,如果你在 pushScene 之后做 replaceScene,然后在新替换的场景中 popScene,你可以很容易地测试这个行为。你会看到旧场景弹出。通常,如果您 p​​opScene 堆栈中只有一个场景,它会抛出一个断言。

于 2012-09-29T20:01:11.010 回答