2017-06-12 85 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

相關問題