我正在尝试制作一个带有弹跳球的游戏,并且我想每 8 秒生成一个球。目前,它在产卵后不会移动。我遇到的问题是,第一个球生成后,应用程序会在接下来的 5 秒内崩溃。我不知道为什么会发生这种情况。我将cheduledTimerWithTimeInterval() 放在touchesBegan 函数中。
func scheduledTimerWithTimeInterval(){
Enemytimer = Timer.scheduledTimer(timeInterval: 8, target:self, selector:#selector(GameScene.spawnEnemies), userInfo:nil, repeats:true)
}
func randomBetweenNumbers(firstNum: CGFloat, secondNum: CGFloat) -> CGFloat{
return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum)
}
func spawnEnemies(){
let xPos = randomBetweenNumbers(firstNum: 0, secondNum:frame.width)
let yPos = randomBetweenNumbers(firstNum: 0, secondNum: frame.height)
enemies.size = CGSize(width: 20, height:20)
enemies.color = UIColor(red:255.0,green:0.0,blue:0.0,alpha:1.0)
enemies.colorBlendFactor = 1.0
enemies.position = CGPoint(x: xPos, y:yPos)
enemies.physicsBody?.affectedByGravity = false
self.addChild(enemies)
最佳答案
您很可能遇到内存问题。我会将 ScheduledTimerWithTimeInterval 方法移出 TouchBegan。现在,每次用户触摸屏幕时,游戏都会启动一个新的计时器(而不启动其他计时器)。将 ScheduledTimerWithTimeInterval 移动到 viewDidLoad 或类似 startGame 的内容,以确保它只被调用一次。
关于swift - 应用程序运行后崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44009429/