【问题标题】:iOS sprite kit 'pop' between scenesiOS精灵套件在场景之间“弹出”
【发布时间】:2014-09-26 11:23:50
【问题描述】:

我是一名初级程序员,在 Xcode 的 sprite-kit 中开发游戏。我想使用不同的 SKScene 制作游戏结束场景。我知道使用视图控制器,如果您转换到第二个视图控制器(例如从游戏视图到游戏结束视图),当我们想要返回到以前的视图控制器时,我们将使用以下行代码:

        [self.navigationController popViewControllerAnimated:YES];

SKScene 是否有与此等价的功能?我使用的方法似乎创建了游戏 SKScene 的新实例(因此每次我在场景之间移动时内存都会增加很多)。

具体来说,我使用以下 (1) 从游戏场景转到游戏结束场景和 (2) 从游戏结束场景转到游戏场景:

(1)(这是 GamePlayScene.m)

SKScene *gameOverScene = [[LTGameOverScene alloc] initWithSize:self.size loss:YES];
SKTransition *reveal = [SKTransition fadeWithDuration:0.5];
[self.view presentScene:gameOverScene transition:reveal];

(2)(这些是 GameOverScene.h)

-(id)initWithSize:(CGSize)size loss:(BOOL)loss 
...
    SKTransition *reveal = [SKTransition flipHorizontalWithDuration:0.5];
    MyScene * scene = [MyScene sceneWithSize:self.view.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;
    [self.view presentScene:scene transition: reveal];

【问题讨论】:

  • 由您来管理游戏中的场景;传统应用程序没有像故事板这样的内置行为。您将需要创建自己的推送/弹出场景控制器,或者您可以简单地转换到新场景并自动释放旧场景(及其内容)。

标签: ios objective-c xcode sprite-kit transition


【解决方案1】:

因为当您呈现另一个 SKScene (GameOverScene) 时,之前的 SKScene (MyScene) 在转换后会自行释放。

【讨论】: