2015-08-08 69 views
8

我使用spritekit和swift在xcode中創建了一個非常簡單的遊戲。我已經完成了實際遊戲本身的編碼。現在我想創建一個主菜單,當遊戲打開時,會出現一個帶按鈕的菜單,可以進入設置或啓動遊戲。我不知道我該如何做到這一點。我應該使用故事板嗎?如果是這樣,我怎麼能在xcode中實現它。謝謝大家:)如何在xcode中使用swift創建spritekit遊戲的主菜單?

+0

[主菜單在夫特]的可能的複製(http://stackoverflow.com/questions/41665676/main-menu-in-swift) – SumNeuron

回答

5

創建兩個新文件。一個精靈套件場景和一個可可觸摸文件。將它們命名爲相同,例如MenuScene。要創建文件,請單擊xcode項目邊欄中的文件夾。然後在運行應用程序時使MenuScene顯示進GameViewController文件。在viewDidLoad下有一行。 if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {在MenuScene變成if let scene = MenuScene.unarchiveFromFile("MenuScene") as? Menu Scene {這點,你必須有一個按鈕,引導你到你的GameScene

import SpriteKit 

class MenuScene: SKScene { 

var playButton = SKSpriteNode() 
let playButtonTex = SKTexture(imageNamed: "play") 

override func didMoveToView(view: SKView) { 

    playButton = SKSpriteNode(texture: playButtonTex) 
    playButton.position = CGPointMake(frame.MidX, frame.midY) 
    self.addChild(playButton) 


override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 


    if let touch = touches.first as? UITouch { 
     let pos = touch.locationInNode(self) 
     let node = self.nodeAtPoint(pos) 

     if node == playButton { 
      if let view = view { 
       let scene = GameScene.unarchiveFromFile("GameScene") as! GameScene 
       scene.scaleMode = SKSceneScaleMode.AspectFill 
       view.presentScene(scene) 
      } 
     } 
    }  
} 

詢問您是否需要進一步的解釋。

+0

喜英里,我不請參閱if let scene = GameScene.unarchiveFromFile(「GameScene」)爲? GameScene {我的gameviewcontroller文件內?它在另一個地方嗎? –

11

夫特3.0

import SpriteKit 

class MenuScene: SKScene { 

    var playButton = SKSpriteNode() 
    let playButtonTex = SKTexture(imageNamed: "play") 

    override func didMove(to view: SKView) { 

     playButton = SKSpriteNode(texture: playButtonTex) 
     playButton.position = CGPoint(x: frame.midX, y: frame.midY) 
     self.addChild(playButton) 
    } 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     if let touch = touches.first { 
      let pos = touch.location(in: self) 
      let node = self.atPoint(pos) 

      if node == playButton { 
       if let view = view { 
        let transition:SKTransition = SKTransition.fade(withDuration: 1) 
        let scene:SKScene = GameScene(size: self.size) 
        self.view?.presentScene(scene, transition: transition) 
       } 
      } 
     } 
    } 
} 
+0

我有一個灰色的屏幕,當這樣做... – Arti

+0

如何顯示'.sks'文件併發送一些參數到它的類 – Arti