我正在开发一款游戏。
我的第一个屏幕包括 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 个节点使场景空白。
尝试这样做:`
let gameSceneTemp = sceneName(fileNamed: "fileName")
gameSceneTemp?.scaleMode = self.scaleMode
self.scene?.view?.presentScene(gameSceneTemp!, transition: SKTransition.doorsCloseHorizontal(withDuration: 0.0))`
我有时也会创建不在 SKScenes 文件中的对象,如果您使用的是 addChild,则应该没有任何问题。
您也可以使用其他方法:
///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))
}
我认为这应该有效。告诉我(如果可能的话)这个解决方案是否对任何人都有效