Anfängerfrage: Wie übertrage ich einen Variablenwert aus einer Instanz in eine andere?

  1. vor 2 Jahren
    Bearbeitet vor 2 Jahren von Richard

    Hallo Swift-Supporter :)
    ich hab da mal ne blöde Frage. Ich hab nach einem Tutorial ein kleines Spiel erstellt und möchte dieses nun erweitern bzw. verfeinern. Ich hab schon während des Tutorials einige Fehler ausgemerzt da er mit einer anderen Version von Swift programmiert hat und das Spiel läuft jetzt auch so wie es soll. Jetzt habe ich nach diesem Tutorial eine neue "Scene" erstellt (neue .swift Datei und neue Klasse) und komme auch drauf sobald der Spieler verloren hat. Nun möchte ich die erreichten Punkte des Spielers in dem neuen Bildschirm darstellen. Wenn ich jetzt aber direkt auf die Variable "score" zugreife bekomme ich natürlicherweise nur eine 0 da die Variable damit deklariert wurde und erst in einer Funktion verändert wird.

    Hier mal ein Ausschnitt bzw. eine Idee wie ich dachte dass es klappen könnte:

    PlayScene.swift

    import SpriteKit
    
    class PlayScene: SKScene {
        
        var score = 0
        
        override func didMoveToView(view: SKView) {
            scoring()
        }
        
        func scoring() {
            for var i = 0; i < 10; i++ {
                score++
            }
        }
    }

    EndScene.swift

    class EndScene: PlayScene {
        
        override func didMoveToView(view: SKView) {
            println(score)
        }
    }

    Meine Frage jetzt: Wie kriege ich den Wert aus der aktuellen Instanz von PlayScene.swift in EndScene.swift?
    Ich habe natürlich auch schon gegoogelt und habe auch einige Hinweise auf "initializer" gefunden und habe es dann mal so probiert:

    PlayScene.swift

    import SpriteKit
    
    
    class PlayScene: SKScene {
        
        var score = 0
        var endScore: Int
        
        override func didMoveToView(view: SKView) {
            scoring()
        }
        
        func scoring() -> Int {
            for var i = 0; i < 10; i++ {
                score++
            }
            return score
        }
        
        init (endScore: Int) {
            self.endScore = scoring()
        }
    }

    EndScene.swift

    class EndScene: PlayScene {
        
        override func didMoveToView(view: SKView) {
            println(endScore)
        }
    }

    aber da hagelt es Fehlermeldungen ... :(

    Wäre echt nett wenn mir jemand anhand dieses Beispiels erklären könnte wie es richtig geht.

  2. Hey Leute,
    ich hab ehrlich gesagt mit mehr antworten gerechnet aber ist nicht schlimm, sind ja auch noch nicht so viele Leute hier angemeldet. Ich habe mittlerweile eine Lösung gefunden indem ich den Wert in NSUserDefaults gespeichert habe. Ist das eigentlich eine saubere Lösung oder eher nicht empfehlenswert?

  3. Hay, mit NSUserDefaults funktioniert es natürlich gut. Würde an deiner stelle auch erstmal dabei bleiben.

 

oder registriere Dich, um zu antworten!