如何在视图中启动 sparkEmmiter(创建自定义 smoke.sks 文件)? Swift 5

How to launch sparkEmmiter (created custom smoke.sks file) in the view? Swift 5

我已经创建了 SpriteKit 粒子发射器 文件 smoke.sks 我想在 UIView 中制作此动画 运行,但是,它没有 addChild 方法,我仍然有一些错误...

我试过这个解决方案:

func addSmoke() {

    //spark particle effect
    let sparkEmmitterPath: String = Bundle.main.path(forResource: "smoke", ofType: "sks")!
    let sparkEmmiter = NSKeyedUnarchiver.unarchiveObject(withFile: sparkEmmitterPath as String) as! SKEmitterNode

    sparkEmmiter.position = CGPoint(x: self.backgroundMaskView.frame.size.width, y: self.backgroundMaskView.frame.size.height/2)
    sparkEmmiter.name = "smoke"
    sparkEmmiter.zPosition = 1
    sparkEmmiter.targetNode = self
    self.view.addChild(sparkEmmiter)
}

2 个错误:

sparkEmmiter.targetNode = self

无法将类型 'ViewController' 的值分配给类型 'SKNode?'

self.addChild(sparkEmmiter)

无法将类型 'SKEmitterNode' 的值转换为预期的参数类型 'UIViewController'

我是否也应该创建 SpriteKit 视图 (SKView)?

我找到的唯一解决方案。 我们需要将 UIView class 更改为 SCNView 并为粒子创建 scnp 文件。

@IBOutlet weak var particles: SCNView!

override func viewDidLoad() {
    super.viewDidLoad()

    let scene = SCNScene()        
    let particlesNode = SCNNode()
    let particleSystem = SCNParticleSystem(named: "smoke.scnp", inDirectory: "")
    particlesNode.addParticleSystem(particleSystem!)
    scene.rootNode.addChildNode(particlesNode)
    particles.backgroundColor = .clear
    particles.scene = scene
}

但是 ... Apple确实删除了创建scnp 个文件。

第二步是更改文件的类型。创建SpriteKit Particle File

(不要配置这个创建的文件,因为当你改变类型时你必须重新配置,它会重置)

现在,更改 Identity 类型。