2017-01-15 1 views
1

Ich habe eine Frage vor und ich löschte es als ich obwohl ich es herausgefunden habe, aber ich habe es nur eingegrenzt.app stürzt ab, nachdem versucht wurde, einen skspritenode zweimal zu laden?

Wenn einer meiner Knoten auf ein Hindernis trifft, zeigt das Spiel eine Punkte-Bezeichnung und einen Neustart-Knopf. Aber wenn mein Knoten nach dem ersten Treffer ein anderes Objekt trifft, stürzt die App ab. Wenn ich das Spiel mit // vor dem Label starte und neu starte, um sie aus der Gleichung zu nehmen, läuft das Spiel gut, aber wenn ich das Spiel mit ihnen starte, stürzt es ab.

Das führt mich zu glauben, dass es abstürzt, weil es versucht, den Restart-Button zu laden und Label zweimal zu scoren. Ich könnte total falsch liegen, aber wie kann ich das korrigieren?

+0

Mit welcher Fehler App stürzt ab? – Whirlwind

Antwort

1

Ich denke, Sie haben wahrscheinlich recht.

Versuch zu addchild ist, wie ich nehme an, dass Sie Dinge in die Szene hinzufügen. Wenn Sie versuchen, einer Szene oder einem Objekt etwas hinzuzufügen, das bereits zu etwas hinzugefügt wurde, erhalten Sie einen Absturz.

Also versuchen Sie wahrscheinlich, Ihren Neustart und die Bewertung Label zu etwas hinzufügen, als Kind, wenn sie bereits ein Elternteil haben, und dies verursacht den Absturz.

0

Gelöst IT!

I if-Anweisungen hinzugefügt die App nur um meine Kollision Code nach dem 1. Kollision laufen und nicht 2

var collision = Int() 


    func didBegin(_ contact: SKPhysicsContact) { 
     var firstBody : SKPhysicsBody = contact.bodyA 
     var secondBody : SKPhysicsBody = contact.bodyB 

     if collision == 0{ 
     if ((firstBody.categoryBitMask == physicsCatagory.bird) && (secondBody.categoryBitMask == physicsCatagory.obstacle)) { 

      collisionWithObstacle(bird: firstBody.node as! SKSpriteNode) 
     } 
     } 
     else if collision != 0{ 
      if ((firstBody.categoryBitMask == physicsCatagory.bird) && (secondBody.categoryBitMask == physicsCatagory.obstacle)) { 

     } 
     } 
    } 


    func collisionWithObstacle(bird:SKSpriteNode){ 


     collision = collision+1 
     scoreTimer.invalidate() 
     obstacleTimer.invalidate() 
     addChild(restart) 
     scoreLabel2.text = "Score: \(score1)" 
     addChild(scoreLabel2) 

    } 

Hoffnung das jemand anderes helfen kann, denn obwohl es im Nachhinein trivial scheint, war es ein Kopf Scratcher für ein paar Nächte nach der Arbeit.

Verwandte Themen