【问题标题】:SpriteKit Scene Not Resetting?SpriteKit 场景未重置?
【发布时间】:2017-05-02 01:35:54
【问题描述】:

我的 SpriteKit 场景文件有问题。我目前将我的 GameScene.sks 排在我的 GameScene.swift 文件中。当我的应用程序加载时,用户进入菜单,然后用户按下播放并转换到 GameScene 文件以通过以下方式玩游戏:

let gameScene = SKScene(fileNamed: "GameScene")
        gameScene?.scaleMode = .aspectFit
        self.view?.presentScene(gameScene!, transition: SKTransition.fade(withDuration: 1.5)) 

当玩家在游戏中击中一个物体时,他们会死亡并返回菜单(也链接到 .sks 文件):

 let menu = SKScene(fileNamed: "menu")
    menu?.scaleMode = .aspectFill
    self.view?.presentScene(menu!, transition: transition)

我的问题是,在用户被带回菜单后,下次他们点击播放时,用户会立即死亡并返回菜单。

这是因为当调用 GameScene 时,一切都与用户死亡时相同。换句话说,玩家正在联系导致他们死亡的同一节点。

有没有办法重置 GameScene?我试过删除所有节点无济于事。

我是不是把场景呈现错了?

【问题讨论】:

  • 这不是我经历过的事情,但您确定(可能通过调试语句)第二次从该文件创建一个新的SKScene

标签: ios swift swift3 sprite-kit skscene


【解决方案1】:

我想通了!我将 removeFromParent() 语句移到了 menu.swift 文件中。在我即将过渡到 GameScene 之前:

obstacles.removeFromParent()

然后

let gameScene = SKScene(fileNamed: "GameScene")
    gameScene?.scaleMode = .aspectFit
    self.view?.presentScene(gameScene!, transition: SKTransition.fade(withDuration: 1.5)) 

如果您有更好的解决方案,请告诉我。谢谢!

【讨论】:

  • 如果你不想重新创建一个新场景,你可以在你的场景上实现一些重置方法,将事物恢复到初始状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
相关资源
最近更新 更多