暂停和重置游戏 Spritekit / Swift 之间的区别?

Posted

技术标签:

【中文标题】暂停和重置游戏 Spritekit / Swift 之间的区别?【英文标题】:Difference between pausing and resetting a game Spritekit / Swift? 【发布时间】:2015-07-08 15:33:22 【问题描述】:

现在我知道了,如果我点击我制作的暂停按钮,它会进入我的暂停菜单。当我通过我为此设置的按钮返回游戏屏幕时,游戏已重置为开始。

我有一个“返回游戏按钮”和一个重置游戏按钮。

如何让这两个正确行动?

我什至不知道从哪里开始,因为我不知道游戏是在我最初离开屏幕时还是在我回到屏幕时清除。我以为我已经阅读了默认行为是在您离开屏幕时保存屏幕状态。

【问题讨论】:

我相信 Apple Docs 声明如果您保留对场景的引用,它将持续存在。 【参考方案1】:

当您将游戏视图控制器 (gameVC) 更改为菜单视图控制器 (menuVC) 时,如果没有任何剩余引用,则所有内容都会被释放。因此,当您返回 gameVC 时,您正在分配新对象(场景、节点等)。

为了暂停游戏,您可能正在寻找 paused 属性。

在您的 SKScene(这是一个 SKNode)上:https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/index.html#//apple_ref/occ/instp/SKNode/paused

暂停

一个布尔值,确定是否处理节点及其后代上的操作。

如果值为 YES,则在场景处理动作时跳过节点(及其所有后代)。

在你SKView : https://developer.apple.com/library/prerelease/mac/documentation/SpriteKit/Reference/SKView/index.html#//apple_ref/occ/instp/SKView/paused

暂停

一个布尔值,指示视图的场景动画是否暂停。

如果值为 YES,则场景的内容固定在屏幕上。不执行任何动作,也不执行物理模拟。

如果 SKView 暂停,update: 方法将不会被调用。

【讨论】:

啊,好棒。当我这样做时,它会阻止导航发生。它暂停了场景,但没有将我发送到暂停的屏幕,显然屏幕上没有任何效果,因为它已暂停。知道如何解决这个问题吗? 正如上面 Epic Byte 所述,您可以保留场景的引用(并且可能在您到达暂停菜单后暂停它)。然后你必须加载那个场景而不是一个新场景。另一种可能性是您提到的那个:存储游戏状态然后加载它(例如:游戏关卡,节点位置,...)。 好吧,很酷的交易。 Lasssst 问题,也是我一开始不敢问的问题,哈哈……你究竟是如何保留场景的参考的(第一个项目,所以我边走边学)?我认为这很简单,如果不是,如果您不想在这里讨论,如果需要,我可以提出一个单独的问题。 您可以在 menuVC 中拥有一个属性 var storedGameScene : GameScene。在过渡到它之前,例如在prepareForSegue 中,您将它设置为您当前的游戏场景。

以上是关于暂停和重置游戏 Spritekit / Swift 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 在 Sprite Kit 游戏中重置高分

无法为 swift Spritekit 创建暂停、重启和主页按钮对话框

SpriteKit Swift 2.0 游戏:跨多个场景的按钮和节点

应用程序激活后保持游戏暂停?

SpriteKit 和 SceneKit – 如何完全暂停游戏?

使用 swift 和 spritekit,你如何阻止场景在变得活跃/移动到前台后取消暂停?