iOS 9 中的 SpriteKit SKView 不再在场景之间转换

SpriteKit SKView no longer transitions between scenes in iOS 9

我们有一个代码库是在 2013 年编写和发布的,但是在 iOS 9 中,当 presentScene:transition: 消息发送到时,应用程序不再在 SKScene 秒之间明显转换我们的SKViewSKScene 收到 didMoveToView: 消息,但场景本身从未在屏幕上显示。

这是我们尝试过的:

None 以上尝试解决了问题。 请注意,在 iOS 8

中一切都正确转换

下面是一些不起作用的示例代码:

-(BOOL)presentTitle {
    if (!titleSceneLoaded) {
        return NO;
    }
    [skView presentScene:titleScene transition:[SKTransition fadeWithDuration:1.0]];
    return YES;
}

将它改成这个使其再次工作(没有转换):

-(BOOL)presentTitle {
    if (!titleSceneLoaded) {
        return NO;
    }
    [skView presentScene:titleScene];
    return YES;
}

关于如何 locate/fix/workaround 这个错误有什么建议吗?

iOS9 在子视图中呈现带有过渡的场景时存在错误。

我遇到了同样的问题,在我的控制器中,我可以通过更改 viewWillLayoutSubviews 中的以下代码来解决此问题:

        [self.subview presentScene:self.scene];
        [self.view addSubview:self.subview];

对此:

        [((SKView *)self.view) presentScene:self.scene];

如果场景必须保留在子视图中,另一种解决方法是使用没有过渡的 presentScene,这确实有效。

我们无法让 SKTransition 工作。我们与开发人员支持团队进行了交谈,在开发人员论坛上发帖,并尝试了此处发布的所有内容。

这是 iOS 9 独有的 SpriteKit 错误。如果其他人在 iOS 9 上遇到此错误,我们将切换到使用 UIView animateWithDuration:animations:completion: 的自定义转换。

有点晚了,但 可能值得探索。

据我所知,我有一个 UIViewController 在没有被完全释放的情况下四处浮动,它上面有一个 SKView。

唯一的 SKView 的副作用是 presentScene(transition) 没有工作,正如您所经历的那样。