Sprite kit 在SpriteKit Swift 2中切换场景
我一直在尝试用sprite kit制作一个游戏,我想实现一个带有播放按钮的开始屏幕,让你进入真正的游戏。我见过很多方法,但大多数都使用swift 1,并且不是最新的 这是我函数的代码Sprite kit 在SpriteKit Swift 2中切换场景,sprite-kit,swift2,skscene,Sprite Kit,Swift2,Skscene,我一直在尝试用sprite kit制作一个游戏,我想实现一个带有播放按钮的开始屏幕,让你进入真正的游戏。我见过很多方法,但大多数都使用swift 1,并且不是最新的 这是我函数的代码 func switchScene() { let scene = GameScene(fileNamed: "PlayScene") let transition = SKTranstion.crossFadeWithDuration(1) self?.view.presentScene(s
func switchScene()
{
let scene = GameScene(fileNamed: "PlayScene")
let transition = SKTranstion.crossFadeWithDuration(1)
self?.view.presentScene(scene, transition)
}
其中PlaySecene是一个扩展SKScene的swift类,这里重要的是有两个.sks文件,因为您使用的是SKNode的
文件名:
便利初始值设定项。因此,如果您尚未完成此操作,请转到
文件->新建->文件->资源->精灵游戏场景
并添加一个新的.sks文件。现在,由于fileNamed:
被声明为可失败的初始值设定项,它可以返回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)
}
}
覆盖函数触摸开始(触摸:设置,withEvent事件:UIEvent?){
如果让场景=播放场景(文件名为:“播放场景”){
let transition=SKTransition.crossFadeWithDuration(1)
视图?.presentScene(场景、过渡:过渡)
}
}
这里重要的是有两个.sks文件,因为您使用的是SKNode的文件名:
方便的初始值设定项。因此,如果您尚未完成此操作,请转到
文件->新建->文件->资源->精灵游戏场景
并添加一个新的.sks文件。现在,由于fileNamed:
被声明为可失败的初始值设定项,它可以返回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)
}
}
覆盖函数触摸开始(触摸:设置,withEvent事件:UIEvent?){
如果让场景=播放场景(文件名为:“播放场景”){
let transition=SKTransition.crossFadeWithDuration(1)
视图?.presentScene(场景、过渡:过渡)
}
}
在我的游戏中,我使用以下方法:
// 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))
告诉我它是否有效:)在我的游戏中,我使用这个:
// 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))
告诉我它是否有效:)那么实际问题是什么有什么错误吗?您是否创建了StartScene.sks和playsecene.sks?您有一个输入错误,它是
SKTransition
,而不是SKTransition
,那么实际的问题是什么呢?;)有什么错误吗?您是否创建了StartScene.sks和playsecene.sks?您有一个输入错误,它是SKTransition
,而不是SKTransition
,我用它做了一些测试,我实现的按钮机制工作正常,但程序无法通过“if let scene=playsecene”语句。另外,谢谢你的帮助,到目前为止,我做了一些测试,我实现的按钮机制工作正常,但程序无法通过“if let scene=playsecene”语句。另外,感谢您的帮助,到目前为止,我不得不对展开进行一些修补,但是(如果let语句带有selectView=playsecene(文件名:“”),但是除此之外,它工作得很好,我还必须对展开进行一些修补,但是(如果let语句带有selectView=playsecene(文件名:“”),但是除此之外,它工作得很好