Ios arc4random函数随机双执行或三执行
我的代码中有一个函数,每30-90秒随机产生一次能量。但是由于某些原因,函数double或tripple每执行3-4次就执行一次。感谢Ron Myschuk对它的帮助,直到现在为止,但它目前运行不太正常,我希望有人能说明我在函数中出错的地方 这些函数基本上会选择一个随机间隔,等待30-90秒,然后启动一个电源函数。然后它调用自己并重新选择一个30-90秒之间的新间隔,选择一个新的随机电源来发射和重复,重复和重复Ios arc4random函数随机双执行或三执行,ios,swift,sprite-kit,arc4random,Ios,Swift,Sprite Kit,Arc4random,我的代码中有一个函数,每30-90秒随机产生一次能量。但是由于某些原因,函数double或tripple每执行3-4次就执行一次。感谢Ron Myschuk对它的帮助,直到现在为止,但它目前运行不太正常,我希望有人能说明我在函数中出错的地方 这些函数基本上会选择一个随机间隔,等待30-90秒,然后启动一个电源函数。然后它调用自己并重新选择一个30-90秒之间的新间隔,选择一个新的随机电源来发射和重复,重复和重复 func spawnRandomPowerup() { let waitF
func spawnRandomPowerup() {
let waitForNextPowerUp = TimeInterval(CGFloat(arc4random() % 5) + 10)
print("- Next PowerUp spawns in \(waitForNextPowerUp) seconds")
self.run(.wait(forDuration: waitForNextPowerUp)) {
let powerup = Int(arc4random_uniform(UInt32(3)))
print("PowerUp: \(powerup)")
var spawnPowerUp: SKAction!
if powerup == 0 {
spawnPowerUp = SKAction.run(self.spawnALifePowerUp)
self.run(spawnPowerUp, withKey: "spawningLifePowerUps")
}
else if powerup == 1 {
spawnPowerUp = SKAction.run(self.spawnAShieldPowerUp)
self.run(spawnPowerUp, withKey: "spawningShieldPowerUps")
}
else if powerup == 2 {
spawnPowerUp = SKAction.run(self.spawnARapidFirePowerUp)
self.run(spawnPowerUp, withKey: "spawningRapidFirePowerUps")
}
self.spawnRandomPowerup()
}
}
我厌倦了一些事情,比如用self.removeAllActions()启动函数,但这只会让事情变得更糟。提前感谢您了解这一点。我在startNewLevel函数中发布了spawnRandomPowerup()调用,而不是startName函数,这导致每次达到100点时,spawnRandomPowerup()调用都会触发
再次感谢罗恩帮我找到这个。从这家伙身上学到了很多 例行的工作。我只是在一个空白的项目中重新测试了它,它像预期的那样一次触发1个。问题不在于这个函数。你把最初的通电呼叫放在哪里了?在上面放一个断点。我怀疑当你的场景加载导致不稳定的结果时,它不止一次被击中。我发现了这个问题,我有两个函数。一个名为startName(),另一个名为startNewLevel(),每次达到一定数量的点时运行,我在startNewLevel()函数中进行了调用。我很抱歉。