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 に答える