在 SpriteKit 中切换场景 Swift 2
Switching Scenes in SpriteKit Swift 2
我一直在尝试使用 sprite kit 制作游戏,我想实现一个带有播放按钮的开始屏幕,让您进入实际游戏。我见过很多方法,但大多数使用 swift 1 并且不是最新的
这是我的函数的代码
func switchScene()
{
let scene = GameScene(fileNamed: "PlayScene")
let transition = SKTranstion.crossFadeWithDuration(1)
self?.view.presentScene(scene, transition)
}
其中 PlayScene 是 swift class 扩展 SKScene
这里重要的是要有两个 .sks 文件,因为您正在使用 SKNode 的 fileNamed:
便捷初始化程序。所以,如果您还没有这样做,请转到
File -> New -> File...-> Resource->SpriteKit game scene
并添加一个新的 .sks 文件。现在,因为 fileNamed:
被声明为可失败初始化器,它可以 return nil:
public convenience init?(fileNamed filename: String)
您应该使用可选绑定以安全的方式访问您的新场景:
StartScene.swift
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let scene = PlayScene(fileNamed: "PlayScene"){
let transition = SKTransition.crossFadeWithDuration(1)
view?.presentScene(scene, transition: transition)
}
}
在我的游戏中,我使用这个:
// Setting a size (or else it may look like its zoomed in)
var selectView = BallSelect(size: view!.bounds.size)
// Setting a file for that scene
selectView = BallSelect(fileNamed: "BallSelect")!
// Setting the scale
selectView.scaleMode = SKSceneScaleMode.AspectFill
// Transitioning scenes wit a specific transition
self.scene?.view?.presentScene(selectView, transition: SKTransition.fadeWithColor(color, duration: 1))
告诉我它是否有效:)
我一直在尝试使用 sprite kit 制作游戏,我想实现一个带有播放按钮的开始屏幕,让您进入实际游戏。我见过很多方法,但大多数使用 swift 1 并且不是最新的 这是我的函数的代码
func switchScene()
{
let scene = GameScene(fileNamed: "PlayScene")
let transition = SKTranstion.crossFadeWithDuration(1)
self?.view.presentScene(scene, transition)
}
其中 PlayScene 是 swift class 扩展 SKScene
这里重要的是要有两个 .sks 文件,因为您正在使用 SKNode 的 fileNamed:
便捷初始化程序。所以,如果您还没有这样做,请转到
File -> New -> File...-> Resource->SpriteKit game scene
并添加一个新的 .sks 文件。现在,因为 fileNamed:
被声明为可失败初始化器,它可以 return nil:
public convenience init?(fileNamed filename: String)
您应该使用可选绑定以安全的方式访问您的新场景:
StartScene.swift
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let scene = PlayScene(fileNamed: "PlayScene"){
let transition = SKTransition.crossFadeWithDuration(1)
view?.presentScene(scene, transition: transition)
}
}
在我的游戏中,我使用这个:
// Setting a size (or else it may look like its zoomed in)
var selectView = BallSelect(size: view!.bounds.size)
// Setting a file for that scene
selectView = BallSelect(fileNamed: "BallSelect")!
// Setting the scale
selectView.scaleMode = SKSceneScaleMode.AspectFill
// Transitioning scenes wit a specific transition
self.scene?.view?.presentScene(selectView, transition: SKTransition.fadeWithColor(color, duration: 1))
告诉我它是否有效:)