我正在玩一个简单的游戏,有一个玩家,一个移动的背景和一个移动的墙壁,有点像飘扬的小鸟。我的播放器能够收集能量。它正在转变并进入一个特殊的层次。
我希望此级别运行大约10秒钟,然后调用反向转换。
当前,我正在使用一个计时器,该计时器仅在10秒钟后调用反向转换。我现在遇到麻烦,当玩家暂停游戏时,计时器仍在运行。
->我在stackoverflow上发现的是您无法恢复计时器,您可以使计时器无效并重新启动它。这会错过我的目标,否则玩家每9秒暂停游戏一次,就可以永远停留在超级关卡中。
你们知道我如何解决我的问题,或者喜欢在代码中使用Timers的替代方法吗?
感谢您的帮助
编辑:这是我简单使用计时器的方式
// transform and go into super level added here
self.transform()
timer = Timer.scheduledTimer(withTimeInterval:10, repeats: false) {
timer in
self.backtransform()
}
答案 0 :(得分:1)
启动计时器时,使用
将当前时间记录为Double。let start = Date().timeIntervalSinceReferenceDate
var remaining = 10.0
当用户暂停计时器时,计算经过的时间:
let elapsed = Date().timeIntervalSinceReferenceDate - start
以及计时器的剩余时间:
remaining -= elapsed
如果用户恢复计时器,请将其设置为剩余时间,而不是10秒。