2017-06-12 3 views
1

私はゲームをうまくやるための学校プロジェクトを持っていますが、私は戻るボタンを追加するのに苦労しています。私はメニューにあなたを連れて行く言葉をクリックするアイデアがあったが、私はそれを行う方法がわからない。通常の「ボタン」は、スプライトキットのシーンから戻ってくるため、使用できません。どんな提案や助けもありがとうございます。iOSでラベルをタップしてシーンを変更することはできますか?

+0

ごめんなさいなぜあなたはこれを昨日私に教えてくれなかったのですか? – Fluidity

+0

@Fluidity私はそれについて考えましたが、あなたはすでに私を助けてくれるように多くの時間を費やしていたと思っていましたし、もはやahahaを無駄にしたくないと思っていました。私はデッドラインを水曜日に移動することができたので、時間があればこれで助けてくれれば嬉しいでしょう:) – James

+0

私はUIKitですばらしいわけではありませんが、これはすでにこの回答があると確信しています – Fluidity

答えて

1

ここに行く:

MenuVC.swift:

enum gameType { 
    case easy 
    case wobble 
    case player2 
} 

var currentGameType: gameType = .easy 
var navController = UINavigationController() 
var storyBoard = UIStoryboard() 

func presentMenuVC() { 
    let menuVC = storyBoard.instantiateViewController(withIdentifier: "menuVC") as! MenuVC 
    navController.pushViewController(menuVC, animated: true) 
} 

class MenuVC : UIViewController { 

    @IBAction func Player2(_ sender: Any) { 
     moveToGame(game: .player2) 
    } 
    @IBAction func Easy(_ sender: Any) { 
     moveToGame(game: .easy) 
    } 
    @IBAction func Wobble(_ sender: Any) { 
     moveToGame(game: .wobble) 
    } 

    func moveToGame(game: gameType) { 

     navController = self.navigationController! 
     storyBoard = self.storyboard! 

     let gameVC = self.storyboard?.instantiateViewController(withIdentifier: "gameVC") as! GameViewController 

     currentGameType = game 

     self.navigationController?.pushViewController(gameVC, animated: true) 

    } 
} 

NewFile.swift:

class MainMenuButton: SKSpriteNode { 

    init(text: String, font: String) { 
    let label = SKLabelNode(text: text) 
    label.fontName = font 

    let texture = SKView().texture(from: label) 

    super.init(texture: texture!, color: .clear, size: texture!.size()) 
    isUserInteractionEnabled = true 
    } 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    presentMenuVC() 
    } 

    required init?(coder aDecoder: NSCoder) { fatalError() } 
} 

GameScene.swift(下部のごdidMoveToViewのFUNCに追加):

addChild(MainMenuButton(text: "go back", font: "Chalkduster")) 
+0

私はnewFile.swiftという名前のファイルを作成し、コードをコピーしましたが、私は複数のエラーを受け取りました。未解決の識別子、宣言されていない型。私はそれが間違っていたと思う。 – James

+0

私はあなたにプロジェクトを電子メールで送りました。 – Fluidity

+0

私はこれをお勧めしません。メモリが正常に機能している場合は、別のView Controllerの上にView Controllerを追加するだけで、私はこのようなものを扱うためにストーリーボードにセグを作ることに目を向けます – Knight0fDragon

1

普通のUIButtonSKViewに追加できますが、これは最もクリーンな解決策ではありません。代わりにSKLabelNodeのタッチ機能はtouchesBegantouchesEndedのようになります。私はこの方法でSpriteKitのボタンを簡単に実装しました。あなたはGitHub hereでそれをチェックアウトすることができます。

+0

彼はSKSceneからUIKit viewcontrollerに戻る方法を尋ねています – Fluidity

+0

困った質問:コンテキストなしで判断するのは難しいですが、あなたは 'SKView'で' present(nil) 'を呼び出すことができますこのビューが属するコントローラを閉じます。全く異なる主題。 –

+0

haha​​、私はUIKitをよく知らない。私はいつもSKSceneで働くと思う。彼は彼のSKSceneから戻ることを望んでいるmain.storyboard viewcontrollerを持っています – Fluidity

関連する問題