Проблемы с падением кадров в секунду в Spritekit

#xcode #sprite-kit #skspritenode

#xcode #sprite-kit #skspritenode

Вопрос:

Приложение, которое я создаю, сбрасывает FPS при создании узлов sprite, я просматривал сообщения повсюду и не могу понять, почему, если у кого-нибудь есть какие-либо идеи, я был бы признателен!

Проблемы возникают на симуляторе и устройстве.

ниже приведен код для создания узлов.

Спасибо.

 @objc func createEnemy(){

        let randomDistribution = GKRandomDistribution(lowestValue: -350, highestValue: 350)
        let sprite = SKSpriteNode(imageNamed: "Virus")

        sprite.position = CGPoint(x: 700, y: randomDistribution.nextInt())
        sprite.name = "Virus"
        sprite.zPosition = 1
        sprite.size = CGSize(width: 70, height: 70)
        addChild(sprite)

        sprite.physicsBody = SKPhysicsBody(texture: sprite.texture!, size: sprite.size)
        sprite.physicsBody?.velocity = CGVector(dx: -500, dy: 0)
        sprite.physicsBody?.linearDamping = 0

        sprite.physicsBody?.contactTestBitMask = 1
        sprite.physicsBody?.categoryBitMask = 0
        sprite.physicsBody?.affectedByGravity = false

        createBonus()
    }

    func createBonus(){

        let randomDistribution = GKRandomDistribution(lowestValue: -350, highestValue: 350)
        let sprite = SKSpriteNode(imageNamed: "Vaccine")

        sprite.position = CGPoint(x: 700, y: randomDistribution.nextInt())
        sprite.name = "Vaccine"
        sprite.size = CGSize(width: 70, height: 70)
        sprite.zPosition = 1
        addChild(sprite)

        sprite.physicsBody = SKPhysicsBody(texture: sprite.texture!, size: sprite.size)
        sprite.physicsBody?.velocity = CGVector(dx: -500, dy: 0)
        sprite.physicsBody?.linearDamping = 0

        sprite.physicsBody?.contactTestBitMask = 1
        sprite.physicsBody?.categoryBitMask = 0
        sprite.physicsBody?.collisionBitMask = 0
        sprite.physicsBody?.affectedByGravity = false
    }
  

Ответ №1:

Вы пытались предварительно загрузить текстуры?

  let image = SKTexture(imageNamed: "nodeImage")


override func didMove(to view: SKView) {

   image.preload{

     print("image has been preloaded")

    }
}
  

Комментарии:

1. Спасибо за предложение, кажется, оно немного сработало, но все еще наблюдается довольно сильное отставание. В любом случае спасибо!

2. Вы тестируете на симуляторе?

3. Как симулятор, так и два устройства

4. hackingwithswift.com/articles/184/…