• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[Swift] SpriteKit: Neustart des Games funktioniert nicht

Chrischu91

Golden Delicious
Registriert
23.11.13
Beiträge
8
Hallo zusammen

Ich kämpfe mich mit einem Problem herum, mit dem ich nicht einmal mit dem Game, welches schon existiert, wenn man ein neues Projekt macht. Ich initialisiere den Wert "Test" mit 0 unten frage ich mit der if abfrage ob der Wert bereits 10 erreicht hat und dann wenn er es erreicht hat, dann lade ich die class GameScene neu. Nur da passiert es: Das Game wird schwarz und man sieht nichts mehr, was mache ich falsch? Besten Dank.

PS: Ziel ist eigentlich, dass sich das Game neu Initialisiert und alles wieder so aussieht wie am anfang.



Code:
import SpriteKit

class GameScene: SKScene {
   
    var Test = 0
   
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        let myLabel = SKLabelNode(fontNamed:"Chalkduster")
        myLabel.text = "Hello, World!"
        myLabel.fontSize = 45
        myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
       
        self.addChild(myLabel)
    }
   
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
       /* Called when a touch begins */
       
        if(Test<10){
            for touch in touches {
                let location = touch.locationInNode(self)
           
                let sprite = SKSpriteNode(imageNamed:"Spaceship")
           
                sprite.xScale = 0.5
                sprite.yScale = 0.5
                sprite.position = location
           
                let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)
           
                sprite.runAction(SKAction.repeatActionForever(action))
           
                self.addChild(sprite)
                Test++
            }
        }
        else{
           self.view?.presentScene(GameScene())
        }
       
       
    }
   
    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
    }
}
 

ecco55

Tokyo Rose
Registriert
26.10.14
Beiträge
71
Versuchs mal anstatt mit
Code:
self.view?.presentScene()
mit
Code:
self.removeAllChildren()
Denke das sollte aufs schnelle die Scene neustarten.
 

Chrischu91

Golden Delicious
Registriert
23.11.13
Beiträge
8
perfekt hat in dem Fall hier geklappt.

Ich habe ein Programm, in dem ich in ein anderes SpriteKit Scene (GameOverScene.swift mit der Class GameOverScene) wechsle mit dem
Code:
self.view?.presentScene(GameOverScene())
das funktioniert soweit so gut, wenn ich nun aber wieder zurück zum Game wechseln will
Code:
self.view?.presentScene(GameScene())
kommt egal was ich mache ein Blackscreen. Es macht einen Restart das merke ich, denn sobald wieder eine Kollision stattfindet, wechselt er wieder aber ich sehe wie gesagt nichts auf dem Bildschirm...

Oder geht dies so nicht?