在 SpriteKit Swift 2 中切换场景

Posted

技术标签:

【中文标题】在 SpriteKit Swift 2 中切换场景【英文标题】:Switching Scenes in SpriteKit Swift 2 【发布时间】:2016-02-18 00:10:32 【问题描述】:

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

func switchScene()

    let scene = GameScene(fileNamed: "PlayScene")
    let transition = SKTranstion.crossFadeWithDuration(1)
    self?.view.presentScene(scene, transition)

其中 PlayScene 是一个扩展 SKScene 的 swift 类

【问题讨论】:

那么实际的问题是什么? ;) 有任何错误吗?您是否同时创建了 StartScene.sks 和 PlayScene.sks ?你有一个错字,是SKTransition,不是SKTranstion 【参考方案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)) 

告诉我它是否有效:)

【讨论】:

我不得不对展开进行一些修改,但是(如果让语句与 selectView = PlayScene(fileNamed:""))但除此之外它工作得很好【参考方案2】:

这里重要的是要有两个 .sks 文件,因为您使用的是 SKNode 的 fileNamed: 便利初始化程序。所以,如果你还没有这样做,去

文件->新建->文件...->资源->SpriteKit游戏场景

并添加一个新的 .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)
             

【讨论】:

我对此进行了一些测试,我实现的按钮机制有效,但程序无法通过“if let scene = PlayScene”语句。附:感谢您到目前为止的帮助

以上是关于在 SpriteKit Swift 2 中切换场景的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit Swift 2.0 游戏:跨多个场景的按钮和节点

如何使用 Swift 在 SpriteKit 程序中初始化/移动相机?

Swift / Spritekit:通过特定场景播放音乐

在spritekit swift问题中更改场景

Swift:删除 Spritekit 中不同场景的广告

Swift,SpriteKit:释放游戏场景并重新分配新场景