首页 > 解决方案 > SpriteKit presentScene 不适用于过渡,只有没有

问题描述

所以我有我SKView的作为IBOutlet和一个委托,它允许场景改变当前场景,如下所示:

// this code is inside the view controller
func changeScene(to sceneType: GameScene.Type) {
    let sceneName = NSStringFromClass(sceneType).components(separatedBy: ".").last!
    let scene = sceneType.init(fileNamed: sceneName)!
    scene.scaleMode = .aspectFill
    scene.dialogueDelegate = self.dialogueView
    scene.sceneDelegate = self
    self.hudScene.hudDelegate = scene
    self.actionButtonScene.actionButtonDelegate = scene
    self.gameView.presentScene(scene, transition: SKTransition.fade(withDuration: 2))
}

我在游戏开始时(并且它有效)和玩家掉出场景时调用此函数一次:

// this code is inside the scene
override func update(_ currentTime: TimeInterval) {
    if self.player.position.y < -self.size.height / 2 {
        self.player.removeFromParent()
        self.sceneDelegate?.changeScene(to: Self.self)
    }
}

但第二次它什么也没做。代码被执行,但没有呈现场景。删除SKTransition似乎可以解决问题,但为什么这里的过渡是一个问题?

标签: swiftsprite-kit

解决方案


推荐阅读