У меня есть глобальный массив cannonArray, который я инициализировал перед любой функцией.У меня есть функция touchesBegan, которая добавляет значения в массив.Когда я печатаю массив из функции touchesBegan, он печатается идеально.Тем не менее, когда я печатаю массив из didMoveToViewFunction, ничего не обновляется, а просто печатает [] (и не изменяется, как следует, потому что он глобальный).У меня также есть другая функция с именем createEnemies, которая работает по таймеру и имеет ту же проблему (печатает правильный добавленный массив внутри функции, но не в другой).Спасибо!:)
var cannonArray = [SKSpriteNode]()
var enemyArray = [SKSpriteNode]()
override func didMove(to view: SKView) {
enemyCreationTimer = Timer.scheduledTimer(timeInterval: 0.75, target: self, selector: #selector(createEnemies), userInfo: nil, repeats: true)
print(enemyArray) //prints empty array
print(cannonArray) // prints empty array
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: self)
cannon = SKSpriteNode(imageNamed: "cannon")
cannon.size = CGSize(width: 50, height: 50)
cannon.position = location
if frameArray[0].contains(location) || frameArray[1].contains(location) {
print("cant")
}else {
self.addChild(cannon)
self.cannonArray.append(cannon)
//if i print here it works
}
}
@objc func createEnemies() {
enemiesSpawned += 1
if enemiesSpawned > enemyNumber {
enemyCreationTimer.invalidate()
}else {
enemy = SKSpriteNode(imageNamed: "enemy")
enemy.position = CGPoint(x: spriteOne.position.x, y: CGFloat(650))
enemy.size = CGSize(width: 25, height: 25)
self.addChild(enemy)
enemy.zPosition = 0
enemy.physicsBody = SKPhysicsBody(circleOfRadius: 12.5)
enemy.physicsBody?.affectedByGravity = false
enemy.run(moveEnemies())
enemyArray.append(enemy)
//if i print here it works
}
}