Swift和Spritekit sceneDidLoad被调用多个

时间:2018-01-05 12:44:04

标签: ios swift sprite-kit scene

我正在使用一个简单的游戏,我有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。

1 个答案:

答案 0 :(得分:0)

首先:我使用 Firebase数据库

所以问题是:我在观察中使用 If Statement

喜欢:

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。