在 spritekit 中暂停游戏时显示菜单

Posted

技术标签:

【中文标题】在 spritekit 中暂停游戏时显示菜单【英文标题】:show menu when paused a game ins spritekit 【发布时间】:2015-06-08 19:46:02 【问题描述】:

我创建了一个类似于塔防的游戏。我可以成功地“暂停”所有游戏。然后我可以用这些代码恢复游戏:

let startLocation = CGPoint(x: location.x, y: location.y);
let myNodeName = self.nodeAtPoint(location)
if(myNodeName.Name == "Start")
   self.view!.paused = false

if(myNodeName.Name == "pause")
   self.view!.paused = true 
   self.showPausedMenu()

在 showPausedMenu 函数中。我用 SKLabelNodes 和 SKSpriteNodes 设计了一个菜单。然而,当我暂停游戏时,所有这些“节点创建”的事情也暂停了。所以什么也没有发生。游戏暂停时如何显示我的菜单?

谢谢。

【问题讨论】:

【参考方案1】:

问题是您正在暂停视图本身。暂停视图会停止所有逻辑。

如果您需要做一个暂停菜单,您需要添加一个将出现在视图顶部的子视图来管理与用户的所有交互,或者您不需要暂停视图,而是放置视图元素暂停并在其上创建东西。

【讨论】:

【参考方案2】:

最好的方法是使用SKNode 组,该组包含您要暂停的所有对象。

这样,您可以完全控制要暂停或取消暂停的元素

【讨论】:

【参考方案3】:

我已经解决了我的问题。暂停游戏时,所有屏幕都冻结了,但是游戏场景仍然检测到所有“触摸”,如果它有节点名称,那么我们可以进行一些操作。此时,问题仅显示我的菜单。所以这是我的解决方案。在我暂停游戏之前,我在屏幕上添加了我的菜单。然后暂停游戏。 在现场版本是

let startLocation = CGPoint(x: location.x, y: location.y);
let myNodeName = self.nodeAtPoint(location)
if(myNodeName.Name == "Start")
   self.view!.paused = false
   self.removePausedMenu()

if(myNodeName.Name == "pause")
   self.showPausedMenu()

showPausedMenu 是:

func showPausedMenu()
    .....
    .....
    /* Create menu and buttons and labels with NODES. and add to parent as child nodes. */
    self.view!.paused = true

【讨论】:

以上是关于在 spritekit 中暂停游戏时显示菜单的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:通过覆盖 SKView 在 SpriteKit 中制作暂停菜单?

如何在情节提要中创建一个按钮以启动在 xcode swift 中使用 spritekit 创建的游戏

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

如何在没有冻结UI的情况下使用加载屏幕正确暂停主线程直到满足条件,

在 SpriteKit 中暂停游戏后文本消失

Spritekit - 在 didBecomeActive 时保持游戏暂停