Hid*_*oka 3 ios sprite-kit swift
override func update(currentTime: NSTimeInterval) {
// ...
}
如何在更新方法中停止currentTime?我想计算自游戏开始以来的时间。当玩家点击暂停按钮时,当前场景成功暂停。但是,更新中的当前时间正在移动。
当场景暂停时,update不会被调用,试试这个代码:
class GameScene: SKScene {
override func didMove(to view: SKView) {
let wait = SKAction.wait(forDuration: 2)
let pause = SKAction.run { self.isPaused = true }
self.run(SKAction.sequence([wait, pause]))
}
override func update(_ currentTime: TimeInterval) {
print("update")
}
}
Run Code Online (Sandbox Code Playgroud)
仅在前 2 秒打印“update”。这证明暂停场景就会停止update。您可能不是暂停场景,而是暂停场景中运行所有操作的节点。
除此之外,通过暂停场景来实现暂停屏幕并不是一个好主意,因为如果场景暂停,用户无法通过点击离开暂停屏幕。此外,您无法在暂停屏幕中显示很酷的动画。
我通常做的就是有一个后台节点。每个游戏精灵都作为背景节点的子节点添加。在暂停屏幕中,背景暂停,但场景仍在运行。然后,我将暂停屏幕精灵添加为场景的直接子级,以便您仍然可以与暂停屏幕进行交互。
您实际上并不需要“停止”该update方法。您只需要在该方法中检查游戏是否暂停即可。如果是,请立即返回。
如果您想测量自玩家开始游戏以来已经过去了多长时间,您也可以使用Date对象。Date在游戏开始时创建一个,Date在用户暂停时创建另一个。调用该timeIntervalSince方法就可以了!
| 归档时间: |
|
| 查看次数: |
1366 次 |
| 最近记录: |