在 Sprite Kit 游戏中重置 SKScene

问题描述 投票:0回答:2

我正在开发一款游戏。

我的第一个屏幕包括 3 个按钮:排行榜、成就和游戏。

当我点击播放时,会显示游戏场景。

let transition = SKTransition.doorsOpenHorizontal(withDuration: 1.0)
let next_scene = GameScene(fileNamed: "GameScene")
next_scene?.scaleMode = scaleMode
view?.presentScene(next_scene!, transition: transition)

当用户死亡时,我想重置游戏场景,包括擦除所有内容并再次调用 didMove 函数。我想擦除游戏场景并重新创建它。

我该怎么做?

我试过了

self.view?.presentScene(nil)
let transition = SKTransition.doorsOpenHorizontal(withDuration: 1.0)
let next_scene = MainMenu(size: self.size)
next_scene.scaleMode = scaleMode
self.view?.presentScene(next_scene, transition: transition)

但是用 0 个节点使场景空白。

ios swift sprite-kit skspritenode skscene
2个回答
0
投票

尝试这样做:`

  let gameSceneTemp = sceneName(fileNamed: "fileName")
                gameSceneTemp?.scaleMode = self.scaleMode
                self.scene?.view?.presentScene(gameSceneTemp!, transition: SKTransition.doorsCloseHorizontal(withDuration: 0.0))`

我有时也会创建不在 SKScenes 文件中的对象,如果您使用的是 addChild,则应该没有任何问题。


0
投票

您也可以使用其他方法:

///Makes a new copy of itself and presents it to be able to "reset" a scene.
func startAgain() {
   guard let newScene = (self.mutableCopy() as? GameScene) else {
      return // it wasn’t able to turn the scene into the specified type
   }
   self.view!.presentScene(newScene, transition: SKTransition.doorsCloseHorizontal(withDuration: 0.2))
}

我认为这应该有效。告诉我(如果可能的话)这个解决方案是否对任何人都有效

© www.soinside.com 2019 - 2024. All rights reserved.