0

我不知道为什么代码中会出现这个错误:

    func torpedoDidCollideWithAlien(torpedo:SKSpriteNode, alien:SKSpriteNode){
        print("HIT")
        torpedo.removeFromParent()
        alien.removeFromParent()

        var aliensDestroyed = 0
        aliensDestroyed += 1

        if (aliensDestroyed > 10){ //Transition to GameOver or Success
            let transition:SKTransition = SKTransition.flipHorizontalWithDuration(0.5)
                let gameOverScene:SKScene = GameOverScene(size: self.size, won: true)
                self.view?.presentScene(gameOverScene, transition: transition)
            }

错误在于:

let transition:SKTransition = SKTransition.flipHorizontalWithDuration(0.5) //'Will never be executed'
4

2 回答 2

5

您声明了一个名为的新变量aliensDestroyed,其值为0. 然后将值增加到1

然后检查该值是否大于 10。这不可能是真的。它将永远是1

因此if语句的内容永远不会执行。

您可能想要的是一个名为的实例变量,而不是在您的函数aliensDestroyed中创建一个新的局部变量。torpedoDidCollideWithAlien

于 2016-04-20T02:16:52.810 回答
0

这不是错误,而是警告。编译器已经对您的代码进行了分析,并告诉您您编写它的方式您的 if 语句永远不会是真的,因此大括号内的语句将永远不会被执行。

rmaddy 在他的回答中解释了原因。

于 2016-04-20T02:55:09.477 回答