2016-10-17 2 views
0

Я пытаюсь создать небольшую игру, но когда приложение переключится на сцену игры (при нажатии кнопки перезапуска), эта сцена игры не будет загружаться правильно. Он даст ошибку: thread 1 exc_bad_instruction (code = exc_i386_invop subcode = 0x0). Вся игра отлично работает в начале (если я еще не умер), но когда я умру, я перейду на другую сцену с кнопкой перезапуска, и как только эта кнопка перезапуска будет нажата, я снова пойду в игру. Я не буду даже получить правильный фон и т.д.Ошибка переключения сцен

Код:

Game Scene (в этой части будет происходить ошибка)

func enemySpawn() { 

    let enemy = SKSpriteNode(imageNamed: "Enemy") 

    let minValue = self.size.width/8 
    let maxValue = self.size.width - 150 

    let spawnPoint = UInt32(maxValue - minValue) // HERE IS THE ERROR 

    enemy.position = CGPoint(x: CGFloat(arc4random_uniform(spawnPoint)), y: self.size.height) 

    enemy.physicsBody = SKPhysicsBody(rectangleOf: enemy.size) 
    enemy.physicsBody?.affectedByGravity = false 
    enemy.physicsBody?.categoryBitMask = physicsCatagory.enemy 
    enemy.physicsBody?.contactTestBitMask = physicsCatagory.bullet 
    enemy.physicsBody?.isDynamic = true 

    let action = SKAction.moveTo(y: -70, duration: TimeInterval(enemyMoveSpeed)) 
    let actionDone = SKAction.removeFromParent() 
    enemy.run(SKAction.sequence([action, actionDone])) 

    self.addChild(enemy) 
} 

Это рестарт сцена:

var restartButton : UIButton! 

override func didMove(to view: SKView) { 

    scene?.backgroundColor = UIColor.white 

    restartButton = UIButton(frame: CGRect(x: 0, y: 0, width: view.frame.size.width/3, height: 30)) 
    restartButton.center = CGPoint(x: view.frame.size.width/2, y: view.frame.size.height/7) 

    restartButton.setTitle("Play Again", for: UIControlState.normal) 
    restartButton.setTitleColor(UIColor.black, for: UIControlState.normal) 
    restartButton.addTarget(self, action: #selector(StartViewController.restart), for: UIControlEvents.touchUpInside) 

    self.view?.addSubview(restartButton) 
} 

func restart() { 
    self.view?.presentScene(GameScene(), transition: SKTransition.crossFade(withDuration: 0.3)) 
    restartButton.removeFromSuperview() 
} 

Надеюсь, кто-то сможет мне помочь! Спасибо!

+0

Есть ли у вас такая же проблема на реальном устройстве? – siarheibrazil

+0

Я не могу проверить это сейчас, потому что я достиг максимального предела ID приложения 10 дней в течение 7 дней. –

ответ

0

Мое личное впечатление, что вы получите ошибку от предыдущей (захороненных сцены.), Но я могу ошибаться ...

let nextScene = GameScene(size: self.scene.size) 
     nextScene.scaleMode = SKSceneScaleMode.AspectFill 

     self.view?.presentScene(nextScene, transition: transition) 

я передам размер в GameScene, а конструктор по умолчанию.

+0

Спасибо за ваш быстрый ответ, но я все равно получаю ту же ошибку:/ –

+0

Вы были правы! Мне пришлось менять это во всех сценах! –

Смежные вопросы