如何在情节提要中创建一个按钮以启动在 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 创建的游戏的主要内容,如果未能解决你的问题,请参考以下文章
在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?
Xcode 6.3 错误 - 无法在情节提要中创建 IBOutlet 引用或使用自定义 UIViewController
Segues 直接从情节提要 xcode 中的视图控制器警告启动