Swift SpriteKit-如何使用计时器切换到新场景
我目前正在尝试在我的SpriteKit游戏中构建一个加载场景,上面有我的开发者徽标,需要在5秒后转换到MainMenuScene。我该怎么做呢 我现在的代码看起来像这样,基本上只是背景/徽标图像Swift SpriteKit-如何使用计时器切换到新场景,swift,timer,sprite-kit,transition,scene,Swift,Timer,Sprite Kit,Transition,Scene,我目前正在尝试在我的SpriteKit游戏中构建一个加载场景,上面有我的开发者徽标,需要在5秒后转换到MainMenuScene。我该怎么做呢 我现在的代码看起来像这样,基本上只是背景/徽标图像 import SpriteKit class LoadingScene: SKScene { override func didMove(to view: SKView) { let background = SKSpriteNode(imageNamed: "fatscoprion")
import SpriteKit
class LoadingScene: SKScene {
override func didMove(to view: SKView) {
let background = SKSpriteNode(imageNamed: "fatscoprion")
background.position = CGPoint (x: self.size.width / 2, y: self.size.height / 2)
background.zPosition = -1
self.addChild(background)
}
}
您可以创建一个定时计时器,并配置一个函数来调用创建和呈现新场景的方法 例如:
class LoadingScene: SKScene {
var timer = Timer()
override func didMove(to view: SKView) {
let background = SKSpriteNode(imageNamed: "")
background.position = CGPoint (x: self.size.width / 2, y: self.size.height / 2)
background.zPosition = -1
self.addChild(background)
//Create a Scheduled timer thats will fire a function after the timeInterval
timer = Timer.scheduledTimer(timeInterval: 5.0,
target: self,
selector: #selector(presentNewScene),
userInfo: nil, repeats: false)
}
@objc func presentNewScene() {
//Configure the new scene to be presented and then present.
let newScene = SKScene(size: .zero)
view?.presentScene(newScene)
}
deinit {
//Stops the timer.
timer.invalidate()
}
}
我根本不建议这样做。如果在加载场景中接到一个电话,那么在转换到MainMenuScene之前需要加载一些资源时,就会遇到问题,因此这并不是最好的选择。最好创建一个方法来加载资源,并完成屏幕的转换。但是,如果您只需要显示一个标准屏幕并保持5秒钟而不进行任何其他操作,则调度程序就足够了。调度程序还不够,因为如果在启动屏幕发生时接到呼叫,则计时器可能会失火,或者您可能会以暂停状态呈现场景。一般的经验法则是永远不要在Sprite Kit中使用计时器。你是在构建一个实际的加载场景,还是只想显示你的徽标5秒钟?您可以使用Launch.xib。如果xib不够长,您可以使用主情节提要添加一个处理徽标的视图,除非绝对必要,否则不需要sprite工具包。