2017-07-12 19 views
0

Swiftで開発中のゲームでは、SKSceneを使用してさまざまな背景を選択して選択することができます。背景が背中を埋めると、次のまたは前の背景を見ることができるボタンがあります。私はすでに、現在の背景を保存し、ゲームシーンに移行する「選択」ボタンをテストしました。今度は、バックグラウンドによって異なる「選択」ボタンを表示したいと思います。各ボタンは異なる価格を表示し、プレーヤーのコインに異なる金額を引きます。SKSceneのボタンを非表示にする

マイコードは、プレーヤーが「次へ」と「前の」ボタンをタップすると、現在、バックを変更することができます。しかし、私はそれぞれの背中のための '選択'ボタンを表示するのに問題があります。ここに私のコードの関連部分です:

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!)") 
    } 

あなたが見ることができるように、私はisHiddenプロパティを使用しようとしているが、私はエラーになっている:「未解決識別子 『selectButton』の使用を」。私はdidMove(toView)の前にボタンを初期化しようとしましたが、selectAction()はdidMove(toView)ブロックの後になければならないので、ちょうどそれを駄目です。私が書いたものが、あまりにも混乱したり間違ったりしないことを望みます。私はSpriteKitを使ってコードを書くことを学んでいます。

SKSceneのボタンの表示/非表示を切り替えるにはどうすればよいですか?

答えて

2

エラーは、didMove(to view: SKView) funcのボタンを宣言しているためです。 PreviousAction()は、これらの変数が存在するかどうかわかりません。クラス内で宣言を移動する必要があります。

class ShopScene: SKScene { 

    let nextButton: NButton!  
    let previousButton: PButton!  
    let selectButton: SButton! 

    override func didMove(to view: SKView) { 

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

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

     selectButton = SButton(defaultButtonImage: "select", activeButtonImage: "selectP", buttonAction: selectAction) 
     addChild(selectButton) 
    } 
} 
関連する問題