我使用spritekit和swift在xcode中创建了一个非常简单的游戏。现在我想要一个主菜单,在我第一次启动应用程序时显示。然后我想要一个按钮,当点击时,将启动游戏。有没有办法做到这一点?我应该使用故事板吗?非常感谢! :)
答案 0 :(得分: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 - &gt;来创建一个新文件。 Cocoa Touch类 - &gt;下一个 - &gt;添加类名playScene - &gt; SKScene的子类 - &gt;并创造它。
在import SpriteKit
playScene.swift
检查THIS示例项目以获取更多信息。
HERE是spriteKit的简单教程。
答案 1 :(得分:0)
答案 2 :(得分:0)
或者,您可以使用Storyboards。在另一个S.O.的M.W.E.中。问题他们有一个基本的菜单&#34;建立。
在你的情况下,你要做的是:
图片