Swift 并且 Spritekit sceneDidLoad 被调用了不止一个
Swift And Spritekit sceneDidLoad being called more than one
我正在开发一个简单的游戏,我有 MenuScene:用户可以选择游戏类型和 GamePlayScene。
第一次用户选择游戏类型一切都很好,但是第二次所有方法都调用了两次,第三次方法调用了三次等等。
我尝试使用 didMoveToView 但仍然有同样的问题。
我应该在游戏结束后删除场景吗?如果是的话怎么办?
这就是我在场景之间转换的方式。
extension SKScene {
func presentSceneWith(NameOfScene scene : String){
if let scene = SKScene(fileNamed: scene){
scene.scaleMode = .aspectFill
self.view?.presentScene(scene)
}
}
}
我用它来呈现给 GamePlayScene 并返回给 MenuScene。
首先:我正在使用 Firebase 数据库。
所以问题是:我在观察中使用 If 语句。
喜欢:
private func searchForOpponents(){
let ref = Database.database().reference()
ref.child("activePlayers").child("waiting").observe( DataEventType.value) { (snapshot) in
// the problem when I put if statement like this
if snapshot == something {
presentToNextScene()
}
}
ref.observe 一秒钟内叫了不止一个所以基本上我不止一次出现在下一个场景中。
解决方案:在我的例子中,我使用 ref.observeSingelEvent() 并更改 DataEventType 到 childChange .
我正在开发一个简单的游戏,我有 MenuScene:用户可以选择游戏类型和 GamePlayScene。
第一次用户选择游戏类型一切都很好,但是第二次所有方法都调用了两次,第三次方法调用了三次等等。
我尝试使用 didMoveToView 但仍然有同样的问题。
我应该在游戏结束后删除场景吗?如果是的话怎么办?
这就是我在场景之间转换的方式。
extension SKScene {
func presentSceneWith(NameOfScene scene : String){
if let scene = SKScene(fileNamed: scene){
scene.scaleMode = .aspectFill
self.view?.presentScene(scene)
}
}
}
我用它来呈现给 GamePlayScene 并返回给 MenuScene。
首先:我正在使用 Firebase 数据库。
所以问题是:我在观察中使用 If 语句。
喜欢:
private func searchForOpponents(){
let ref = Database.database().reference()
ref.child("activePlayers").child("waiting").observe( DataEventType.value) { (snapshot) in
// the problem when I put if statement like this
if snapshot == something {
presentToNextScene()
}
}
ref.observe 一秒钟内叫了不止一个所以基本上我不止一次出现在下一个场景中。
解决方案:在我的例子中,我使用 ref.observeSingelEvent() 并更改 DataEventType 到 childChange .