4.0 KiB
4.0 KiB
| name | description | metadata | ||
|---|---|---|---|---|
| script-execute | Compiles and runs C# in the Unity Editor (Roslyn): plain statements with the last expression as the result, or a full class with a static method. See the skill body for the modes, usings/include and Unity object parameters. |
|
Script / Execute
Modes
- Snippet (default): plain statements. The last expression is the result (
GameObject.Find("Player").name). Ownusinglines, local classes and functions are allowed;awaitworks. Usings for System, LINQ, UnityEngine, UnityEditor and AIGD are already there; an unknown type name is imported automatically when exactly one namespace has it. - Full code: when
csharpCodedeclares classclassNamewith a static methodmethodName, that method runs. isMethodBody=trueforces snippet mode.
Compile errors point at your own lines (snippet.cs(2,5)).
usings / include
usings: extra namespaces, e.g.["MyGame.Gameplay"].include: helper.csfiles or folders (recursive), relative to<Project>/.ai-game-dev/snippets, compiled with the snippet.
Passing Unity objects as parameters
Parameters become the snippet's variables (or the method's arguments, in order):
UnityEngine.GameObject— resolves an actual GameObject from value{"instanceID": N},{"name": "..."}, or{"path": "..."}.UnityEngine.Component(or any component subtype) — resolves from{"instanceID": N}.AIGD.GameObjectRef— passes aGameObjectRefPOCO directly; callgoRef.FindGameObject()to resolve it.AIGD.ComponentRef— passes aComponentRefPOCO.AIGD.ObjectRef— passes a baseObjectRefPOCO.
How to Call
unity-mcp-cli run-tool script-execute --input '{
"csharpCode": "string_value",
"className": "string_value",
"methodName": "string_value",
"parameters": "string_value",
"isMethodBody": false,
"usings": [],
"include": []
}'
For complex input (multi-line strings, code), save the JSON to a file and use:
unity-mcp-cli run-tool script-execute --input-file args.jsonOr pipe via stdin (recommended):
unity-mcp-cli run-tool script-execute --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 |
|---|---|---|---|
csharpCode |
string |
Yes | C# code. Snippet: 'var go = GameObject.Find("Player");\ngo.transform.position'. Full: 'public class Script { public static int Main() { return 42; } }'. |
className |
string |
No | Full mode: the class whose static method runs (namespace-qualified or not). |
methodName |
string |
No | Full mode: the static method to run. |
parameters |
string |
No | Values for the snippet's / method's parameters by name, e.g. {go: ref("GameObject#12"), n: 6}. Leave empty if there are none. RQL: SerializedMemberList |
isMethodBody |
boolean |
No | Force snippet mode even when the code declares 'className'. |
usings |
array |
No | Extra namespaces for snippet mode, e.g. ["MyGame.Gameplay"]. |
include |
array |
No | Helper .cs files or folders (recursive) compiled with the code, relative to /.ai-game-dev/snippets. |
Input JSON Schema
{
"type": "object",
"properties": {
"csharpCode": {
"type": "string"
},
"className": {
"type": "string"
},
"methodName": {
"type": "string"
},
"parameters": {
"type": "string"
},
"isMethodBody": {
"type": "boolean"
},
"usings": {
"type": "array",
"items": {
"type": "string"
}
},
"include": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"csharpCode"
]
}
Output
This tool does not return structured output.