Macos 同时创建多个精灵音符

Macos 同时创建多个精灵音符,macos,sprite-kit,skspritenode,swift5,Macos,Sprite Kit,Skspritenode,Swift5,我用Swift编写了一个太空射手的程序。如果你杀死了最后一个外星人,那么应该会有更多的外星人来。我这样试过: for _ in 1...level { let alien: SKSpriteNode = SKSpriteNode(imageNamed: "alien") alien.setScale(0.05) alien.position = CGPoint(x: CGFloat(arc4random_uniform(UInt32(size.width))), y:

我用Swift编写了一个太空射手的程序。如果你杀死了最后一个外星人,那么应该会有更多的外星人来。我这样试过:

for _ in 1...level {

    let alien: SKSpriteNode = SKSpriteNode(imageNamed: "alien")

    alien.setScale(0.05)
    alien.position = CGPoint(x: CGFloat(arc4random_uniform(UInt32(size.width))), y: size.height + alien.size.height)
    alien.zPosition = 0
    alien.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: "alien"), size: alien.size)
    alien.physicsBody?.contactTestBitMask = 1
    alien.physicsBody?.collisionBitMask = 0
    alien.physicsBody?.categoryBitMask = 2

    addChild(alien)

    // Move 'alien'.
    alien.run(SKAction.move(to: CGPoint(x: alien.position.x, y: CGFloat((arc4random_uniform(UInt32(size.height / 2) + 1) + UInt32(size.height / 2)))), duration: 3))

    aliens += 1

}

如果我杀了最后一个外星人,预期的外星人会来,但是FPS数字从60.0变为50.0

是否可以在不减少FPS计数的情况下同时生成多个精灵?

或者是否有一种解决方案可以像使用计时器一样一次添加一个精灵?


通常是这样的:


帧速率保持在50 fps的时间有多长?节点数的作用是什么?显示大约30个节点,FPS数保持在50.0并持续3秒。可能是您在单个帧中添加了太多节点。解决这个问题的一种方法是在每帧中添加一个(或几个)节点。另一种方法是拥有一个节点池,这些节点已经存在,但并未全部添加到场景中;i、 在游戏过程中,你永远不会创建和破坏外星节点。但是,如果您只添加几十个节点,我不希望帧速率会大幅下降。此外,如果您使用iOS模拟器进行开发,在macOS 10.15和iOS 13之前,您将无法获得金属硬件支持。我建议您在项目中创建macOS和iOS目标,并使用macOS进行开发,以便获得金属硬件支持。定期在iOS上测试,根本不使用模拟器。我总是只添加1到9个精灵。帧速率保持在50 fps多长时间?节点数的作用是什么?显示大约30个节点,FPS数保持在50.0并持续3秒。可能是您在单个帧中添加了太多节点。解决这个问题的一种方法是在每帧中添加一个(或几个)节点。另一种方法是拥有一个节点池,这些节点已经存在,但并未全部添加到场景中;i、 在游戏过程中,你永远不会创建和破坏外星节点。但是,如果您只添加几十个节点,我不希望帧速率会大幅下降。此外,如果您使用iOS模拟器进行开发,在macOS 10.15和iOS 13之前,您将无法获得金属硬件支持。我建议您在项目中创建macOS和iOS目标,并使用macOS进行开发,以便获得金属硬件支持。定期在iOS上测试,根本不使用模拟器。我总是只添加1到9个精灵。