在 Sprite Kit 游戏中重置 SKScene
Posted
技术标签:
【中文标题】在 Sprite Kit 游戏中重置 SKScene【英文标题】:Reset SKScene in Sprite Kit Game 【发布时间】:2017-09-12 14:20:54 【问题描述】:我正在开发一款游戏。
我的第一个屏幕包括 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 个节点使场景变为空白。
【问题讨论】:
你试过关注这个answer 尝试了该解决方案,但问题是它不会重置我的场景。它淡出它,当它淡入时,它会继续场景。它不是从头开始,而是从上次开始的地方开始,包括游戏结束菜单等。 根据你所说的这个答案(我)应该有效:***.com/a/40052923/6728196。另外,如果您说要重新启动 GameScene,为什么要显示 MainMenu? 试过了,但没有成功。 '尝试添加一个已经有父节点的 SKNode:let next_scene = MenuScene(fileNamed: "MenuScene")
【参考方案1】:
尝试这样做:`
let gameSceneTemp = sceneName(fileNamed: "fileName")
gameSceneTemp?.scaleMode = self.scaleMode
self.scene?.view?.presentScene(gameSceneTemp!, transition: SKTransition.doorsCloseHorizontal(withDuration: 0.0))`
我有时也会创建不在 SKScenes 文件中的对象,如果您使用 addChild,应该不会有任何问题。
【讨论】:
以上是关于在 Sprite Kit 游戏中重置 SKScene的主要内容,如果未能解决你的问题,请参考以下文章
如果 Sprite Kit 中有墙,我怎样才能停止一个人的行走?
使用 Sprite Kit 和 Swift 在游戏中显示当前分数
使用 Swift 在 Sprite Kit 中构建棋盘游戏? [关闭]
游戏中的三角学——Sprite Kit 和 Swift 教程