2017-07-12 1 views
0

In einem Spiel, das ich mit Swift entwickle, habe ich eine SKScene, in der der Spieler verschiedene Hintergründe anzeigen und auswählen kann. Die Hintergründe füllen die Rückseite und es gibt Schaltflächen, mit denen man den nächsten oder vorherigen Hintergrund sehen kann. Ich habe bereits eine Auswahltaste getestet, die den aktuellen Hintergrund speichert und in die Spielszene übergeht. Jetzt möchte ich je nach Hintergrund verschiedene 'Select'-Buttons zeigen, jeder Button zeigt einen anderen Preis und zieht einen anderen Betrag von den Münzen des Spielers ab.Ein- und Ausblenden von Schaltflächen in einer SKScene

Mein Code kann derzeit die Rückseite ändern, wenn der Player auf die Schaltflächen "next" und "previous" tippt. Aber ich habe Probleme, die Auswahltasten für jede Rückseite zu zeigen. Hier sind die relevanten Teile meines Codes:

import SpriteKit 

class ShopScene: SKScene { 

var backNumber = 100 
var backRemainder = 0 
var background = SKSpriteNode() 

var coinNumber = UserDefaults.standard.integer(forKey: "coinSaved") 
var backName:String? = UserDefaults.standard.string(forKey: "backSaved") 

override func didMove(to view: SKView) { 

    if backName != nil { 
     backName = UserDefaults.standard.string(forKey: "backSaved") 
    } else { 
     backName = "back1" 
    } 

    background.texture = SKTexture(imageNamed: "\(backName!)") 
    self.addChild(background) 

    let nextButton: NButton = NButton(defaultButtonImage: "next", activeButtonImage: "nextP", buttonAction: nextAction) 
    addChild(nextButton) 

    let previousButton: PButton = PButton(defaultButtonImage: "previous", activeButtonImage: "previousP", buttonAction: previousAction) 
    addChild(previousButton) 

    let selectButton: SButton = SButton(defaultButtonImage: "select", activeButtonImage: "selectP", buttonAction: selectAction) 
    addChild(selectButton) 

func nextAction() { 

     backNumber += 1 
     backRemainder = backNumber % 2 

     switch backRemainder { 
     case 0: 
      backName = "back1" 
     case 1: 
      backName = "back2" 
      selectButton.isHidden = true 
     default: 
      backName = "back1" 
     } 

     UserDefaults.standard.set(backName, forKey: "backSaved") 
     background.texture = SKTexture(imageNamed: "\(backName!)") 
    } 

func previousAction() { 

     backNumber -= 1 
     backRemainder = backNumber % 2 

     switch backRemainder { 
     case 0: 
      backName = "back1" 
     case 1: 
      backName = "back2" 
      selectButton.isHidden = true 
     default: 
      backName = "back1" 
     } 

     UserDefaults.standard.set(backName, forKey: "backSaved") 
     background.texture = SKTexture(imageNamed: "\(backName!)") 
    } 

Wie Sie sehen können, ich versuche, die isHidden Eigenschaft zu verwenden, aber ich erhalte eine Fehlermeldung: „Verwendung von ungelöster Kennung‚SELECT,‘“. Ich habe versucht, die Schaltfläche vor didMove (toView) zu initialisieren, aber es vermasselt nur Dinge wie die selectAction() muss nach dem didMove (toView) -Block sein. Ich hoffe, dass das, was ich gerade geschrieben habe, nicht zu verwirrend oder falsch ist, ich lerne gerade mit SpriteKit zu programmieren.

Wie kann ich Tasten in einer SKScene ein- und ausblenden?

Antwort

2

Der Fehler liegt daran, dass Sie Ihre Tasten in der didMove(to view: SKView) Funktion deklarieren. PreviousAction() wird nicht wissen, dass diese Variablen existieren. Sie müssen ihre Deklarationen innerhalb der Klasse und nicht der Funktion

verschieben
Verwandte Themen