ios - SpriteKit : run action while scene is paused

标签 ios swift sprite-kit

我有一个按钮可以在我的代码中暂停游戏。我想要的是使用该按钮暂停游戏会出现一条消息,显示“已暂停”。但是,由于场景已暂停,因此不会出现该消息。

我现在拥有的是一个 SKLabelNode,开始时 alpha 为 0.0,当用户暂停游戏时,它会通过 fadeInWithDuration() 更改为 1.0。然后,当用户再次按下按钮时,它会通过 fadeOutWithDuration() 变回 0.0。问题是当场景暂停时,带有 fadeInWithDuration() 的 SKAction 不会运行。

我怎样才能做到这一点?

最佳答案

Apple 在“DemoBots”中也使用的一种最佳方法是创建一个您暂停的世界节点,而不是场景。

创建一个 worldNode 属性

class GameScene: SKScene {

    let worldNode = SKNode()
}

在didMoveToView中添加到场景中

addChild(worldNode)

然后将您需要暂停的所有内容添加到 worldNode。这包括通常由场景运行的 Action (例如计时器、敌人生成等)

worldNode.addChild(someNode)
worldNode.run(someSKAction)

比起你说的暂停功能

worldNode.isPaused = true
physicsWorld.speed = 0

在简历中

worldNode.isPaused = false
physicsWorld.speed = 1

如果暂停时有想忽略的内容,您还可以在更新函数中添加额外的检查。

override func update(_ currentTime: CFTimeInterval) {

    guard !worldNode.isPaused else { return }

    // your code
}

这样在游戏暂停时添加暂停标签或其他 UI 会容易得多,因为您实际上并没有暂停场景。您还可以运行任何您想要的操作,除非该操作已添加到 worldNode 或 worldNode 的子节点。

希望对你有帮助

关于ios - SpriteKit : run action while scene is paused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536521/

相关文章:

jquery - Bootstrap 导航栏切换按钮隐藏在移动设备上直到滚动(iOS)

swift - 球在 Pong Clone 中不动

ios - BSP Dungeon Generator 出现无法修复的错误

xcode - 不知道为什么switch控件总是发送false值

Swift:在 Switch 语句中使用比较运算符

ios - 加载注释时解包可选值时出现意外 fatal error

ios - 完成在 SpriteNode 上运行的操作而不禁用触摸

ios - 禁用时在 UIButton 上设置背景颜色?

iphone - 从 ios sdk 中的文档目录加载图像

ios - 一些 Restkit 方法不可用