You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift SceneKit中particleColor属性无法为复制后的粒子系统的粒子图片着色的问题求助

iOS Swift SceneKit中particleColor属性无法为复制后的粒子系统的粒子图片着色的问题求助

大家好,我最近在尝试用SceneKit创建带颜色的粒子效果,逻辑看起来都通顺,但就是死活达不到预期效果,想请各位大佬帮忙排查下问题😭

我写的核心代码如下,原本想通过particleColor把白色星星粒子图染成蓝色,但运行后粒子始终是纯白色,完全没被着色:

let particleSystem = SCNParticleSystem()
particleSystem.particleSize = 1.0 // 放大粒子尺寸
particleSystem.particleImage = UIImage(named: "star_07.png") // 目标是给这张白色粒子图着色
particleSystem.particleColor = UIColor(red: 0.0, green: 0, blue: 1.0, alpha: 1.0)
particleSystem.particleAngularVelocity = 100.0
particleSystem.particleAngleVariation = 200.0
particleSystem.emitterShape = SCNBox(
    width: CGFloat(1.0), 
    height: CGFloat(1.0), 
    length: CGFloat(1.0), 
    chamferRadius: 0.0
)
particleSystem.birthDirection = .surfaceNormal
particleSystem.particleVelocity = 0.4
particleSystem.particleVelocityVariation = 0.1
particleSystem.particleLifeSpan = 1.2
particleSystem.particleLifeSpanVariation = 0.1
particleSystem.emissionDuration = 0.1
particleSystem.blendMode = .additive
particleSystem.birthRate = 100
particleSystem.birthLocation = .volume
particleSystem.particleSizeVariation = 0.1

let debugParticleNode = SCNNode()
guard let particleCopy = particleSystem.copy() as? SCNParticleSystem else {
    print("Failed to copy particle system")
    return
}
debugParticleNode.addParticleSystem(particleCopy)
scene.rootNode.addChildNode(debugParticleNode)

根据官方文档的描述,particleColor就是用来给particleImage提供的纹理进行着色或明暗调整的,但实际运行完全不生效。我已经试了好几种排查方法,都没解决:

  • 把混合模式blendMode从.additive改成.alpha,粒子还是白色;
  • 添加particleColorVariation属性,设置全范围的颜色变化空间,结果依旧没效果:
    particleSystem.particleColorVariation = SCNVector4(1.0, 1.0, 1.0, 0.0)
    
  • 换了另一张透明背景的白色粒子PNG图,问题仍然存在。

我的运行环境是Xcode + iPhone模拟器(iOS 18.5),实在摸不着头脑了,有没有遇到过类似问题的朋友给指点下方向?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:04:38