【发布时间】:2019-08-20 13:03:23
【问题描述】:
我很好奇是否有人能够找到一种方法来保持场景活动的时间。当我需要触发某些事件时,这很重要,比如说“游戏开始 5 分钟后生成船”。
更新周期的问题在于,当前经过的时间不仅仅是活跃的游戏时间,因此如果您接到电话或切换应用程序,返回时您将获得 X 分钟的时间跳跃。
目前,我使用SKAction.customAction 来跟踪我的时间,并且它有效,但我无法保证动作触发的顺序,因此我的事件最终可能会延迟 1 帧。
这是我现在正在做的事情,请告诉我你为保持时间一致所做的工作。
//注意:NodeComponent是一个协议扩展,可以快速访问GKSKNodeComponent的节点
import GameplayKit
class ElapsedTimeComponent:GKComponent,NodeComponent
{
var elapsedTime : TimeInterval = 0.0
override func didAddToEntity() {
node.scene?.addComponentToComponentSystem(self)
self.node.run(SKAction.customAction(withDuration:330000000000000000000000000000000000000){node,seconds in
elapsedTime = seconds
(node as! SKLabelNode).text = "\(seconds)"
})
}
override func update(deltaTime seconds: TimeInterval) {
}
}
【问题讨论】:
标签: ios swift sprite-kit gameplay-kit