这就是我如何放置发射器:
func addParticle(at: CGPoint) {
let emitter = SKEmitterNode(fileNamed: "hit.sks")
emitter?.position = at
emitter?.zPosition = 10
scene.addChild(emitter!)
scene.run(SKAction.wait(forDuration: 1), completion: {
emitter?.removeFromParent()
})
}
有时我有一个性能延迟,时间分析器显示我有SKS文件延迟(文件解码等)。
我有什么办法可以避免这个吗?
最佳答案
你实际上不是在预加载粒子系统。每次都要创建一个新的,并在末尾删除它(并导致没有对它的引用),所以它得到gc'd。
相反,将粒子系统添加到屏幕外的节点,当需要时,将其移回场景中需要/想要的位置,然后在不再需要时将其移回屏幕外。
这将防止任何需要创建粒子系统、将其缠绕并使其运行等。
你只需要播放和暂停…移动它。
可以直接暂停粒子系统,也可以暂停其父节点,以便在将其重新显示在屏幕上时处于所需的状态。
在此处了解更多信息:https://developer.apple.com/documentation/spritekit/skemitternode/1398027-advancesimulationtime
关于swift - 预加载SKEmitterNode,使用时滞后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49294715/