Sprite kit 在SpriteKit Swift 2中切换场景

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

我一直在尝试用sprite kit制作一个游戏,我想实现一个带有播放按钮的开始屏幕,让你进入真正的游戏。我见过很多方法,但大多数都使用swift 1,并且不是最新的 这是我函数的代码

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(文件名:“”),但是除此之外,它工作得很好