297 lines
9.5 KiB
Markdown
297 lines
9.5 KiB
Markdown
---
|
|
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.
|
|
metadata:
|
|
generated-by: mcp-plugin-dotnet
|
|
---
|
|
|
|
# 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
|
|
|
|
```bash
|
|
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:
|
|
> ```bash
|
|
> unity-mcp-cli run-tool animator-modify --input-file args.json
|
|
> ```
|
|
>
|
|
> Or pipe via stdin (recommended):
|
|
> ```bash
|
|
> 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
|
|
|
|
```json
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"animatorRef": {
|
|
"$ref": "#/$defs/AIGD.AssetObjectRef"
|
|
},
|
|
"modifications": {
|
|
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorModification-1"
|
|
}
|
|
},
|
|
"$defs": {
|
|
"UnityEngine.EntityId": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+$"
|
|
},
|
|
"System.Type": {
|
|
"type": "string"
|
|
},
|
|
"AIGD.AssetObjectRef": {
|
|
"type": "object",
|
|
"properties": {
|
|
"instanceID": {
|
|
"$ref": "#/$defs/UnityEngine.EntityId",
|
|
"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
|
|
|
|
```json
|
|
{
|
|
"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": {
|
|
"$ref": "#/$defs/UnityEngine.EntityId"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"instanceId"
|
|
]
|
|
},
|
|
"UnityEngine.EntityId": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+$"
|
|
},
|
|
"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"
|
|
]
|
|
}
|
|
```
|
|
|