Я пытаюсь создать задержку внутри цикла while.Я довольно новичок в этом, и в настоящее время он просто не работает.Он никогда не срабатывает ни разу с задержкой отправки, но если я уберу задержку, он срабатывает повторно.
По сути, я проверяю, движется ли скорость узлов в SKScene, если они все еще движутся, не заканчивайте игру.Но как только они замедлились, закончите игру.
func RemainingNodeCheck (complete:() -> Void) {
CountVelocites()
if (IdleVelocity.max()!.isLess(than: 1.0)) {
complete()
} else {
print("Velocity too high, begin wait...")
while !(IdleVelocity.max()?.isLess(than: 1.0))! {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(1)) {
print("Second passed")
self.CountVelocites()
}
if (IdleVelocity.max()!.isLess(than: 1.0)) {
break
}
}
print("Velocity Calmed down")
complete()
}
}
Я полагаю, это может быть связано с темами?Или на самом деле это просто говорит о том, что задержка начинает ждать одну секунду так много раз, что она никогда не звонит?
ОБНОВЛЕНИЕ: Я бы использовал таймер, но RemaingNodeCheck вызывается издругая часть, и она ожидает, пока RemainingNodeCheck отправит обратно complete ()