2017-06-12 86 views
1

我有一个学校项目,使一个游戏,这很好,但我努力添加一个后退按钮。我有一个想法,点击返回这个词来带你进入菜单,但我不知道该怎么做。正常的“按钮”不可用,因为它从精灵套件场景返回。任何建议或帮助表示赞赏。在iOS中点击标签后是否可以更改场景?

+0

废话你为什么不告诉我这个昨天。我想知道你是否会在后面加上一个按钮 – Fluidity

+0

@流利性我确实考虑过它,但我认为你已经花了那么多时间来帮助我,并且不想浪费更多的时间。我设法让我的截止日期移到星期三,所以如果你有时间,那么如果你可以帮忙的话,这将是非常好的:) – 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

我不会推荐这个,如果内存服务正常,你只是在另一个视图控制器的顶部添加一个视图控制器,并且最终会打开堆栈。我会考虑在故事板中创建segues来处理这类内容 – Knight0fDragon

1

您可以将UIButton添加到SKView,但这可能不是最干净的解决方案。您可以改为使用SKLabelNode的触控功能,如touchesBegantouchesEnded。我这样做了一个简单的按钮SpriteKit。你可以在GitHub here上查看它。

+0

他问如何从SKScene回到他的UIKit视图控制器 – Fluidity

+0

令人困惑的问题然后:)很难判断没有上下文,但你可以在你的'SKView'上调用'present(nil)'或者干脆解除该视图所属的控制器。完全不同的科目。 –

+0

哈哈,我不太了解UIKit,我想我总是在SKScene工作。他有一个main.storyboard视图控制器,他想从他的SKScene回到 – Fluidity

相关问题