21 KiB
| name | description | metadata | ||
|---|---|---|---|---|
| particle-system-get | Inspect a `UnityEngine.ParticleSystem` component on a GameObject — runtime state (playing/paused/emitting/stopped, particle count, time) plus opt-in serialized data for any of the ~24 particle modules (Main, Emission, Shape, Velocity, Noise, Collision, Trails, Renderer, etc.). Pair with 'particle-system-modify' to write changes back. |
|
ParticleSystem / Get
Inspect a UnityEngine.ParticleSystem component on a GameObject. Returns runtime state (isPlaying, isPaused, isEmitting, isStopped, particleCount, time) plus opt-in serialized data for any of the particle modules. Use 'particle-system-modify' afterwards to write changes back.
Inputs
gameObjectRef— the GameObject hosting theParticleSystemcomponent (required).componentRef— optional. Resolves a specificParticleSystemwhen the GameObject has more than one; otherwise the firstParticleSystemfound is used.includeMain,includeEmission,includeShape,includeVelocityOverLifetime,includeLimitVelocityOverLifetime,includeInheritVelocity,includeLifetimeByEmitterSpeed,includeForceOverLifetime,includeColorOverLifetime,includeColorBySpeed,includeSizeOverLifetime,includeSizeBySpeed,includeRotationOverLifetime,includeRotationBySpeed,includeExternalForces,includeNoise,includeCollision,includeTrigger,includeSubEmitters,includeTextureSheetAnimation,includeLights,includeTrails,includeCustomData,includeRenderer— per-module toggles.includeMaindefaults totrue; everything else defaults tofalse.includeAll— whentrue, overrides every per-module flag and emits all modules.deepSerialization— whentrue, recurses through nested objects via ReflectorNet; otherwise only top-level members are serialized (cheaper, smaller payload).
Behavior
Only the modules whose include-flags resolve to true are serialized — this keeps responses small when you only need one or two modules. includeRenderer reads the sibling UnityEngine.ParticleSystemRenderer component on the same GameObject and is skipped silently when no renderer is present. The whole call runs on the Unity main thread.
How to Call
unity-mcp-cli run-tool particle-system-get --input '{
"gameObjectRef": "string_value",
"componentRef": "string_value",
"includeMain": false,
"includeEmission": false,
"includeShape": false,
"includeVelocityOverLifetime": false,
"includeLimitVelocityOverLifetime": false,
"includeInheritVelocity": false,
"includeLifetimeByEmitterSpeed": false,
"includeForceOverLifetime": false,
"includeColorOverLifetime": false,
"includeColorBySpeed": false,
"includeSizeOverLifetime": false,
"includeSizeBySpeed": false,
"includeRotationOverLifetime": false,
"includeRotationBySpeed": false,
"includeExternalForces": false,
"includeNoise": false,
"includeCollision": false,
"includeTrigger": false,
"includeSubEmitters": false,
"includeTextureSheetAnimation": false,
"includeLights": false,
"includeTrails": false,
"includeCustomData": false,
"includeRenderer": false,
"includeAll": false,
"deepSerialization": false
}'
For complex input (multi-line strings, code), save the JSON to a file and use:
unity-mcp-cli run-tool particle-system-get --input-file args.jsonOr pipe via stdin (recommended):
unity-mcp-cli run-tool particle-system-get --input-file - <<'EOF' {"param": "value"} EOF
Troubleshooting
If unity-mcp-cli is not found, either install it globally (npm install -g unity-mcp-cli) or use npx unity-mcp-cli instead.
Read the /unity-initial-setup skill for detailed installation instructions.
Input
| Name | Type | Required | Description |
|---|---|---|---|
gameObjectRef |
any |
Yes | Reference to the GameObject containing the ParticleSystem component. |
componentRef |
any |
No | Optional reference to a specific ParticleSystem component if the GameObject has multiple. If not provided, uses the first ParticleSystem found. |
includeMain |
boolean |
No | Include Main module data (duration, looping, prewarm, startDelay, startLifetime, startSpeed, startSize, startRotation, startColor, gravityModifier, simulationSpace, scalingMode, playOnAwake, maxParticles, etc.). |
includeEmission |
boolean |
No | Include Emission module data (rateOverTime, rateOverDistance, bursts). |
includeShape |
boolean |
No | Include Shape module data (shapeType, radius, angle, arc, position, rotation, scale, mesh, texture, etc.). |
includeVelocityOverLifetime |
boolean |
No | Include Velocity over Lifetime module data (x, y, z, space, orbital, radial, speedModifier). |
includeLimitVelocityOverLifetime |
boolean |
No | Include Limit Velocity over Lifetime module data (limit, dampen, separateAxes, drag). |
includeInheritVelocity |
boolean |
No | Include Inherit Velocity module data (mode, curve). |
includeLifetimeByEmitterSpeed |
boolean |
No | Include Lifetime by Emitter Speed module data (curve, range). |
includeForceOverLifetime |
boolean |
No | Include Force over Lifetime module data (x, y, z, space, randomized). |
includeColorOverLifetime |
boolean |
No | Include Color over Lifetime module data (color gradient). |
includeColorBySpeed |
boolean |
No | Include Color by Speed module data (color, range). |
includeSizeOverLifetime |
boolean |
No | Include Size over Lifetime module data (size curve, separateAxes). |
includeSizeBySpeed |
boolean |
No | Include Size by Speed module data (size, range). |
includeRotationOverLifetime |
boolean |
No | Include Rotation over Lifetime module data (angular velocity, separateAxes). |
includeRotationBySpeed |
boolean |
No | Include Rotation by Speed module data (angular velocity, range). |
includeExternalForces |
boolean |
No | Include External Forces module data (multiplier, influenceFilter). |
includeNoise |
boolean |
No | Include Noise module data (strength, frequency, scrollSpeed, damping, octaves, quality, remap). |
includeCollision |
boolean |
No | Include Collision module data (type, mode, planes, dampen, bounce, lifetimeLoss). |
includeTrigger |
boolean |
No | Include Trigger module data (inside, outside, enter, exit actions). |
includeSubEmitters |
boolean |
No | Include Sub Emitters module data (birth, collision, death, trigger, manual emitters). |
includeTextureSheetAnimation |
boolean |
No | Include Texture Sheet Animation module data (mode, tiles, animation, frameOverTime). |
includeLights |
boolean |
No | Include Lights module data (ratio, light, color, range, intensity). |
includeTrails |
boolean |
No | Include Trails module data (mode, ratio, lifetime, width, color). |
includeCustomData |
boolean |
No | Include Custom Data module data (modes, vectors, colors). |
includeRenderer |
boolean |
No | Include Renderer module data (renderMode, material, sortMode, alignment, shadows). |
includeAll |
boolean |
No | Include ALL modules data. Overrides individual flags. |
deepSerialization |
boolean |
No | Performs deep serialization including all nested objects. Otherwise, only serializes top-level members. |
Input JSON Schema
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef"
},
"includeMain": {
"type": "boolean"
},
"includeEmission": {
"type": "boolean"
},
"includeShape": {
"type": "boolean"
},
"includeVelocityOverLifetime": {
"type": "boolean"
},
"includeLimitVelocityOverLifetime": {
"type": "boolean"
},
"includeInheritVelocity": {
"type": "boolean"
},
"includeLifetimeByEmitterSpeed": {
"type": "boolean"
},
"includeForceOverLifetime": {
"type": "boolean"
},
"includeColorOverLifetime": {
"type": "boolean"
},
"includeColorBySpeed": {
"type": "boolean"
},
"includeSizeOverLifetime": {
"type": "boolean"
},
"includeSizeBySpeed": {
"type": "boolean"
},
"includeRotationOverLifetime": {
"type": "boolean"
},
"includeRotationBySpeed": {
"type": "boolean"
},
"includeExternalForces": {
"type": "boolean"
},
"includeNoise": {
"type": "boolean"
},
"includeCollision": {
"type": "boolean"
},
"includeTrigger": {
"type": "boolean"
},
"includeSubEmitters": {
"type": "boolean"
},
"includeTextureSheetAnimation": {
"type": "boolean"
},
"includeLights": {
"type": "boolean"
},
"includeTrails": {
"type": "boolean"
},
"includeCustomData": {
"type": "boolean"
},
"includeRenderer": {
"type": "boolean"
},
"includeAll": {
"type": "boolean"
},
"deepSerialization": {
"type": "boolean"
}
},
"$defs": {
"UnityEngine.EntityId": {
"type": "string",
"pattern": "^[0-9]+$"
},
"System.Type": {
"type": "string"
},
"AIGD.GameObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"$ref": "#/$defs/UnityEngine.EntityId",
"description": "instanceID of the UnityEngine.Object. If it is '0' and 'path', 'name', 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'. Priority: 1 (Recommended)"
},
"path": {
"type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
},
"name": {
"type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3."
},
"assetType": {
"$ref": "#/$defs/System.Type",
"description": "Type of the asset."
},
"assetPath": {
"type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'"
},
"assetGuid": {
"type": "string",
"description": "Unique identifier for the asset."
}
},
"required": [
"instanceID"
],
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"$ref": "#/$defs/UnityEngine.EntityId",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
}
},
"required": [
"gameObjectRef"
]
}
Output
Output JSON Schema
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.ParticleSystem.Editor.GetParticleSystemResponse",
"description": "Response containing ParticleSystem data with requested modules."
}
},
"$defs": {
"AIGD.GameObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"$ref": "#/$defs/UnityEngine.EntityId",
"description": "instanceID of the UnityEngine.Object. If it is '0' and 'path', 'name', 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'. Priority: 1 (Recommended)"
},
"path": {
"type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
},
"name": {
"type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3."
},
"assetType": {
"$ref": "#/$defs/System.Type",
"description": "Type of the asset."
},
"assetPath": {
"type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'"
},
"assetGuid": {
"type": "string",
"description": "Unique identifier for the asset."
}
},
"required": [
"instanceID"
],
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"UnityEngine.EntityId": {
"type": "string",
"pattern": "^[0-9]+$"
},
"System.Type": {
"type": "string"
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"$ref": "#/$defs/UnityEngine.EntityId",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
},
"name": {
"type": "string",
"description": "Object name."
},
"value": {
"description": "Value of the object, serialized as a non stringified JSON element. Can be null if the value is not set. Can be default value if the value is an empty object or array json."
},
"fields": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value."
},
"description": "Fields of the object, serialized as a list of 'SerializedMember'."
},
"props": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value."
},
"description": "Properties of the object, serialized as a list of 'SerializedMember'."
}
},
"required": [
"typeName"
],
"additionalProperties": false
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"com.IvanMurzak.Unity.MCP.ParticleSystem.Editor.GetParticleSystemResponse": {
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Reference to the GameObject containing the ParticleSystem component."
},
"componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Reference to the ParticleSystem component."
},
"componentIndex": {
"type": "integer",
"description": "Index of the ParticleSystem component in the GameObject's component list."
},
"isPlaying": {
"type": "boolean",
"description": "Whether the ParticleSystem is currently playing."
},
"isPaused": {
"type": "boolean",
"description": "Whether the ParticleSystem is currently paused."
},
"isEmitting": {
"type": "boolean",
"description": "Whether the ParticleSystem is currently emitting."
},
"isStopped": {
"type": "boolean",
"description": "Whether the ParticleSystem is currently stopped."
},
"particleCount": {
"type": "integer",
"description": "Current particle count."
},
"time": {
"type": "number",
"description": "Current simulation time."
},
"main": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Main module data."
},
"emission": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Emission module data."
},
"shape": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Shape module data."
},
"velocityOverLifetime": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Velocity over Lifetime module data."
},
"limitVelocityOverLifetime": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Limit Velocity over Lifetime module data."
},
"inheritVelocity": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Inherit Velocity module data."
},
"lifetimeByEmitterSpeed": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Lifetime by Emitter Speed module data."
},
"forceOverLifetime": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Force over Lifetime module data."
},
"colorOverLifetime": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Color over Lifetime module data."
},
"colorBySpeed": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Color by Speed module data."
},
"sizeOverLifetime": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Size over Lifetime module data."
},
"sizeBySpeed": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Size by Speed module data."
},
"rotationOverLifetime": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Rotation over Lifetime module data."
},
"rotationBySpeed": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Rotation by Speed module data."
},
"externalForces": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "External Forces module data."
},
"noise": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Noise module data."
},
"collision": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Collision module data."
},
"trigger": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Trigger module data."
},
"subEmitters": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Sub Emitters module data."
},
"textureSheetAnimation": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Texture Sheet Animation module data."
},
"lights": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Lights module data."
},
"trails": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Trails module data."
},
"customData": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Custom Data module data."
},
"renderer": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Renderer module data."
}
},
"required": [
"componentIndex",
"isPlaying",
"isPaused",
"isEmitting",
"isStopped",
"particleCount",
"time"
],
"description": "Response containing ParticleSystem data with requested modules."
}
},
"required": [
"result"
]
}