如何在情节提要中创建一个按钮以启动在 xcode swift 中使用 spritekit 创建的游戏

Posted

技术标签:

【中文标题】如何在情节提要中创建一个按钮以启动在 xcode swift 中使用 spritekit 创建的游戏【英文标题】:How to create a button in storyboard to start a game created with spritekit in xcode swift 【发布时间】:2015-08-08 05:53:29 【问题描述】:

我使用 spritekit 和 swift 在 xcode 中创建了一个非常简单的游戏。现在我想要一个在我第一次启动应用程序时显示的主菜单。然后我想要一个按钮,当点击它时,将开始游戏。有没有办法做到这一点?我应该使用故事板吗?非常感谢! :)

【问题讨论】:

Main Menu In Swift的可能重复 【参考方案1】:

通过使用SpriteKit,您可以这样做:

在您的GameViewController.swift 中,将您的代码替换为以下代码:

import UIKit
import SpriteKit

class GameViewController: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        //load your GameScene from viewController
        let scene = GameScene(size: view.bounds.size)
        let skView = view as! SKView
        skView.showsFPS = false
        skView.showsNodeCount = false
        skView.ignoresSiblingOrder = true
        scene.scaleMode = .ResizeFill
        skView.presentScene(scene)

    

    override func prefersStatusBarHidden() -> Bool 
        return true
    

此代码将在您开始游戏时加载 GameScene

将此代码添加到您的 GameScene.swift 类中:

import SpriteKit

class GameScene: SKScene 
    //create playbutton instance
    let playButton = SKSpriteNode(imageNamed: "play_unpresed")

    override func didMoveToView(view: SKView) 

        backgroundColor = UIColor.greenColor()
        addPlayButton()  //add playbutton
    

    func addPlayButton()

        playButton.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
        playButton.xScale = 0.2
        playButton.yScale = 0.2
        self.addChild(playButton)
    

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) 
        /* Called when a touch begins */
        for touch in (touches as! Set<UITouch>)
            let location = touch.locationInNode(self)
            //this will detect touch on play button
            if self.nodeAtPoint(location) == self.playButton 
                //it will transits to the next scene
                let reveal = SKTransition.flipHorizontalWithDuration(0.5)
                let letsPlay = playScene(size: self.size)
                self.view?.presentScene(letsPlay, transition: reveal)

            
        

    
    override func update(currentTime: CFTimeInterval) 
        /* Called before each frame is rendered */
    

这将加载一个带有一个按钮的场景,当你按下一个按钮时,它会带你到你的playScene,为此你必须通过点击 Command + N 然后点击 ios Source -> Cocoa Touch 类来创建一个新文件 - > 下一步 -> 添加类名 playScene -> SKScene 的子类 -> 并创建它。

在您的playScene.swift 中添加import SpriteKit

查看THIS 示例项目了解更多信息。

HERE 是 spriteKit 的简单教程。

【讨论】:

如何通过创建 cocoa touch 类来启动游戏? 创建新游戏时只需选择 spriteKit。 如果我替换了gameviewcontroller中的代码,那么我的游戏将无法正常运行? 我建议您阅读我在回答中建议您的教程,它将为您提供有关 spriteKit 的基本知识。【参考方案2】:

    您只需将一个 viewController 拖到故事板上即可。

    设置Is Initial View Controller,加一个按钮就可以了

    control+drag 从按钮到您的游戏视图控制器。选择show

我已经测试过了。它可以工作。当我单击按钮时,它将导航到游戏视图控制器

【讨论】:

按住control键,用鼠标左键点击按钮,不要松开,它会显示一个segue线,把它拖到你的sprite view controller【参考方案3】:

故事板

或者,您可以使用情节提要。在M.W.E. 中获取另一个 S.O.质疑他们是否设置了基本的“菜单”。

在你的情况下,你会做的是:

转到 Main.storyboard。 在右侧工具栏上,找到视图控制器 将视图控制器拖入 Main.storyboard 点击新的视图控制器 单击 - 右侧工具栏 - 身份检查器(看起来像一张名片) 将类更改为 GameViewController 单击左侧层次结构中的视图(在新视图控制器下) 点击身份检查器 将类更改为 SKView 点击原视图控制器 点击身份检查器 将类更改为 UIViewController 点击原始 UIViewController 中的视图 点击身份检查器 将类更改为 UIView 右侧工具栏底部的查找按钮 将其拖到第一个视图上 右键单击从按钮拖动到第二个视图 在弹出菜单中,在 action segue 下,点击 show 右键从按钮向上拖动,添加水平居中约束 右键从按钮拖动到右边,添加垂直居中约束

图片

【讨论】:

以上是关于如何在情节提要中创建一个按钮以启动在 xcode swift 中使用 spritekit 创建的游戏的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 4.3 中创建没有情节提要的项目

在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?

Xcode 6.3 错误 - 无法在情节提要中创建 IBOutlet 引用或使用自定义 UIViewController

Segues 直接从情节提要 xcode 中的视图控制器警告启动

带有情节提要的 presentViewController 显示黑色视图 iOS 7.1 xcode 5.1

如何摆脱或更改情节提要以编程方式创建 segue