<!--
{
  "availability" : [
    "iOS: 8.0.0 - 26.0.0",
    "iPadOS: 8.0.0 - 26.0.0",
    "macCatalyst: 13.1.0 - 26.0.0",
    "macOS: 10.8.0 - 26.0.0",
    "tvOS: 9.0.0 - 26.0.0",
    "visionOS: 1.0.0 - 26.0.0",
    "watchOS: 3.0.0 - 26.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "SceneKit",
  "identifier" : "/documentation/SceneKit/SCNParticleSystem/propertyControllers",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SCNParticleSystem(py)propertyControllers"
  },
  "title" : "propertyControllers"
}
-->

# propertyControllers

A dictionary that optionally associates particle properties with objects that animate a property’s value for each particle.

```
var propertyControllers: [SCNParticleSystem.ParticleProperty : SCNParticlePropertyController]? { get set }
```

## Discussion

Each key in this dictionary is one of the constants listed in `Particle Property Keys`, and the value for each key is a [`SCNParticlePropertyController`](/documentation/SceneKit/SCNParticlePropertyController) object responsible for varying that property over time. Use particle property controllers to add efficient animations that change the appearance or behavior of each particle emitted by the system.

To add more complex behavior that cannot be described by a [`SCNParticlePropertyController`](/documentation/SceneKit/SCNParticlePropertyController) object, use the [`addModifier(forProperties:at:modifier:)`](/documentation/SceneKit/SCNParticleSystem/addModifier(forProperties:at:modifier:)) to add a particle modifier block. However, be aware that particle modifier blocks can severely impact rendering performance.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)