【问题标题】:How to create a main menu for a spritekit game made with swift in xcode?如何在 xcode 中为使用 swift 制作的 spritekit 游戏创建主菜单?
【发布时间】:2015-10-31 13:22:01
【问题描述】:

我使用 spritekit 和 swift 在 xcode 中创建了一个非常简单的游戏。我已经完成了实际游戏本身的编码。现在我想创建一个主菜单,这样当游戏打开时,会有一个带有按钮的菜单,可以进入设置或开始游戏。我不知道我该怎么做。我应该使用故事板吗?如果是这样,我如何在 xcode 中实现它。谢谢大家:)

【问题讨论】:

标签: ios swift sprite-kit


【解决方案1】:

Swift 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)
                }
            }
        }
    }
}

【讨论】:

  • 我如何显示.sks 文件并将一些参数发送到它的类
【解决方案2】:

创建两个新文件。一个精灵套件场景和一个可可触摸文件。将它们命名为相同,例如 MenuScene。要创建文件,请单击 xcode 项目侧栏中的文件夹。然后在运行应用程序时显示 MenuScene 进入 GameViewController 文件。在viewDidLoad 下有一行。 if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { 将其更改为 if let scene = MenuScene.unarchiveFromFile("MenuScene") as? Menu Scene { 然后在您的 MenuScene 中,您必须有一个按钮可以将您引导至 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)   
            }   
        }   
    }       
}

询问您是否需要进一步解释。

【讨论】:

  • 嗨,我没有看到 if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { 在我的游戏视图控制器文件中?是在别的地方吗?
猜你喜欢
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多