Modifier un AnimatorController Unity

VérifiéSûr

Applique une série de modifications à un AnimatorController Unity : paramètres, layers, états, transitions et vitesses.

Spar Skills Guide Bot
DeveloppementIntermédiaire
0029/08/2026
Claude CodeCursorWindsurf
#unity#animator#animation#asset-modification#mcp

Recommandé pour

Notre avis

Applique des modifications par lot à un AnimatorController Unity (paramètres, couches, états, transitions) via l'outil unity-mcp-cli.

Points forts

  • Gère de nombreux types de modifications (paramètres, couches, états, transitions, vitesses).
  • Les erreurs par modification sont accumulées sans interrompre le lot.
  • L'asset est marqué comme sale puis sauvegardé automatiquement.

Limites

  • Nécessite d'abord d'exécuter animator-get-data pour connaître les noms valides.
  • Se limite aux AnimatorController et aux AnimationClip existants.
  • L'installation de unity-mcp-cli est requise.
Quand l'utiliser

Lorsque vous devez restructurer ou régler un AnimatorController Unity de manière programmatique dans un workflow piloté par MCP.

Quand l'éviter

Pour des modifications manuelles ponctuelles plus rapides dans l'éditeur Unity ou lorsque les données de l'animator sont inconnues.

Analyse de sécurité

Sûr
Score qualité88/100

The skill instructs using a Unity-specific CLI tool to modify AnimatorController assets. It does not contain destructive shell commands, exfiltration, obfuscation, or disabling of safety features. The bash commands shown are limited to invoking the unity-mcp-cli tool with JSON input.

Aucun point d'attention détecté

Exemples

Add parameter
Add a float parameter 'Speed' to the AnimatorController at Assets/Animators/Player.controller
Remove layer
Remove the layer named 'Aim' from the animator controller Assets/Animators/Player.controller
Set default state and speed
In Assets/Animators/Player.controller, set the default state of layer 0 to 'Idle' and set the speed of state 'Run' to 1.5

name: animator-modify description: Apply a batch of modifications to a Unity AnimatorController — add/remove parameters, layers, states, and transitions; set default states; set state motion/speed. Use 'animator-get-data' first to discover valid names.

Animator / Modify

Apply a batch of modifications to a Unity AnimatorController asset. Each modification is dispatched by its AnimatorModificationType discriminator. Use 'animator-get-data' first to discover valid names so the diff is targeted.

Inputs

  • animatorRef — reference to the AnimatorController asset (path must start with Assets/ and end with .controller).
  • modifications — array of AnimatorModification entries.

Supported modification types

  • AddParameter / RemoveParameter — manage controller parameters (float, int, bool, trigger).
  • AddLayer / RemoveLayer — manage animator layers.
  • AddState / RemoveState — manage states inside a specific layer.
  • SetDefaultState — pick the default state for a layer.
  • AddTransition / RemoveTransition — manage state-to-state transitions.
  • AddAnyStateTransition — add a transition from Any State.
  • SetStateMotion — assign an AnimationClip as a state's motion.
  • SetStateSpeed — set a state's speed multiplier.

Behavior

Per-modification errors are accumulated in the response's errors array instead of aborting the whole batch. The controller asset is marked dirty and saved after the modifications complete.

How to Call

unity-mcp-cli run-tool animator-modify --input '{
  "animatorRef": "string_value",
  "modifications": "string_value"
}'

For complex input (multi-line strings, code), save the JSON to a file and use:

unity-mcp-cli run-tool animator-modify --input-file args.json

Or pipe via stdin (recommended):

unity-mcp-cli run-tool animator-modify --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 | |------|------|----------|-------------| | animatorRef | any | Yes | Reference to the AnimatorController asset to modify. | | modifications | any | Yes | Array of modifications to apply to the controller. |

Input JSON Schema

{
  "type": "object",
  "properties": {
    "animatorRef": {
      "$ref": "#/$defs/AIGD.AssetObjectRef"
    },
    "modifications": {
      "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorModification-1"
    }
  },
  "$defs": {
    "System.Type": {
      "type": "string"
    },
    "AIGD.AssetObjectRef": {
      "type": "object",
      "properties": {
        "instanceID": {
          "type": "integer",
          "description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
        },
        "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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
    },
    "com.IvanMurzak.Unity.MCP.Animation.AnimatorModification": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "AddParameter",
            "RemoveParameter",
            "AddLayer",
            "RemoveLayer",
            "AddState",
            "RemoveState",
            "SetDefaultState",
            "AddTransition",
            "RemoveTransition",
            "AddAnyStateTransition",
            "SetStateMotion",
            "SetStateSpeed"
          ],
          "description": "Modification type. Properties below are used conditionally based on this value."
        },
        "parameterName": {
          "type": "string",
          "description": "Parameter name. Required for: AddParameter, RemoveParameter."
        },
        "parameterType": {
          "type": "string",
          "description": "Parameter type: Float, Int, Bool, Trigger. Required for: AddParameter."
        },
        "defaultFloat": {
          "type": "number",
          "description": "Default float value. Optional for: AddParameter (Float type)."
        },
        "defaultInt": {
          "type": "integer",
          "description": "Default int value. Optional for: AddParameter (Int type)."
        },
        "defaultBool": {
          "type": "boolean",
          "description": "Default bool value. Optional for: AddParameter (Bool type)."
        },
        "layerName": {
          "type": "string",
          "description": "Layer name. Required for: AddLayer, RemoveLayer, AddState, RemoveState, SetDefaultState, AddTransition, RemoveTransition, AddAnyStateTransition, SetStateMotion, SetStateSpeed."
        },
        "stateName": {
          "type": "string",
          "description": "State name. Required for: AddState, RemoveState, SetDefaultState, SetStateMotion, SetStateSpeed."
        },
        "motionAssetPath": {
          "type": "string",
          "description": "Asset path to AnimationClip. Optional for: AddState. Required for: SetStateMotion."
        },
        "speed": {
          "type": "number",
          "description": "Speed multiplier. Required for: SetStateSpeed."
        },
        "sourceStateName": {
          "type": "string",
          "description": "Source state name. Required for: AddTransition, RemoveTransition."
        },
        "destinationStateName": {
          "type": "string",
          "description": "Destination state name. Required for: AddTransition, RemoveTransition, AddAnyStateTransition."
        },
        "hasExitTime": {
          "type": "boolean",
          "description": "Whether transition waits for exit time. Optional for: AddTransition, AddAnyStateTransition."
        },
        "exitTime": {
          "type": "number",
          "description": "Normalized exit time (0-1). Optional for: AddTransition, AddAnyStateTransition."
        },
        "duration": {
          "type": "number",
          "description": "Transition blend duration. Optional for: AddTransition, AddAnyStateTransition."
        },
        "hasFixedDuration": {
          "type": "boolean",
          "description": "Whether duration is in seconds (true) or normalized (false). Optional for: AddTransition, AddAnyStateTransition."
        },
        "conditions": {
          "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionData-1",
          "description": "Transition conditions. Optional for: AddTransition, AddAnyStateTransition."
        }
      },
      "required": [
        "type"
      ]
    },
    "com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionData-1": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionData"
      }
    },
    "com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionData": {
      "type": "object",
      "properties": {
        "parameter": {
          "type": "string",
          "description": "Parameter name for the condition."
        },
        "mode": {
          "type": "string",
          "description": "Condition mode: If, IfNot, Greater, Less, Equals, NotEqual."
        },
        "threshold": {
          "type": "number",
          "description": "Threshold value for the condition."
        }
      }
    },
    "com.IvanMurzak.Unity.MCP.Animation.AnimatorModification-1": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorModification"
      }
    }
  },
  "required": [
    "animatorRef",
    "modifications"
  ]
}

Output

Output JSON Schema

{
  "type": "object",
  "properties": {
    "result": {
      "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorTools-ModifyAnimatorResponse"
    }
  },
  "$defs": {
    "com.IvanMurzak.Unity.MCP.Animation.ModifyAnimatorInfo": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "instanceId": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "instanceId"
      ]
    },
    "System.Collections.Generic.List(System.String)": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "com.IvanMurzak.Unity.MCP.Animation.AnimatorTools-ModifyAnimatorResponse": {
      "type": "object",
      "properties": {
        "modifiedAsset": {
          "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.ModifyAnimatorInfo"
        },
        "errors": {
          "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
        }
      }
    }
  },
  "required": [
    "result"
  ]
}
Skills similaires