暂停和重置游戏 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 Spritekit 创建暂停、重启和主页按钮对话框
SpriteKit Swift 2.0 游戏:跨多个场景的按钮和节点