Marketplace unity-editor
Remote control Unity Editor via CLI using unityctl. Use when working with Unity projects to launch/stop editor, enter/exit play mode, compile scripts, view logs, load scenes, run tests, capture screenshots, or execute C# code for debugging. Activate when user mentions Unity, play mode, compilation, or needs to interact with a running Unity Editor.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/dirtybitgames/unity-editor" ~/.claude/skills/aiskillstore-marketplace-unity-editor && rm -rf "$T"
skills/dirtybitgames/unity-editor/SKILL.mdunityctl - Unity Editor Remote Control
Control a running Unity Editor from the command line without batch mode.
Instructions
Setup (Required First)
- Start the bridge daemon:
unityctl bridge start - Launch Unity:
or manually open the project in Unity Editorunityctl editor run - Verify connection:
unityctl status
Refresh Assets After Script Changes
After modifying C# scripts, refresh assets to compile:
unityctl asset refresh
Returns compilation errors directly in the output (non-zero exit code on failure). Fix errors and re-run until compilation succeeds before entering play mode.
Common Commands
Status & Bridge:
unityctl status # Check Unity running, bridge, and connection status unityctl bridge start # Start bridge daemon (runs in background) unityctl bridge stop # Stop bridge
Editor Lifecycle:
unityctl editor run # Launch Unity Editor (auto-detects version) unityctl editor stop # Stop running Unity Editor
Play Mode:
unityctl play enter # Enter play mode unityctl play exit # Exit play mode
Logs:
unityctl logs # Show all logs since last clear (auto-clears on play enter and compile) unityctl logs -n 50 # Limit to last 50 entries unityctl logs --stack # Show stack traces for log entries unityctl logs --full # Show full history (ignore clear boundary)
Scenes:
unityctl scene list # List scenes unityctl scene load Assets/Scenes/Main.unity # Load scene
Testing:
unityctl test run # Run edit mode tests unityctl test run --mode playmode # Play mode tests
Screenshots:
unityctl screenshot capture # Capture screenshot
Script Execution (Debugging Power Tool)
Execute arbitrary C# in the running editor via Roslyn. Invaluable for debugging and automation.
// tmp/get-version.cs using UnityEngine; public class Script { public static object Main() { return Application.version; } }
unityctl script execute -f tmp/get-version.cs
You can also execute code directly with
-c:
unityctl script execute -c "using UnityEngine; public class Script { public static object Main() { return Application.version; } }"
Scripts must define a class with a
public static object Main() method. The return value is JSON-serialized.
Getting Help
unityctl --help # List all commands unityctl <command> --help # Command-specific help
Examples
Workflow: Edit script, compile, and test:
# After editing C# files... unityctl asset refresh # Returns compilation errors if any unityctl play enter unityctl logs # Check runtime logs (shows all since play enter) unityctl play exit
Debug: Find all GameObjects in scene:
// tmp/find-objects.cs using UnityEngine; public class Script { public static object Main() { return GameObject.FindObjectsOfType<GameObject>().Length; } }
unityctl script execute -f tmp/find-objects.cs
Debug: Inspect Player position:
// tmp/find-player.cs using UnityEngine; public class Script { public static object Main() { var go = GameObject.Find("Player"); return go?.transform.position.ToString() ?? "not found"; } }
unityctl script execute -f tmp/find-player.cs
Debug: Log message to Unity console:
// tmp/log-message.cs using UnityEngine; public class Script { public static object Main() { Debug.Log("Hello from CLI"); return "logged"; } }
unityctl script execute -f tmp/log-message.cs
Best Practices
- Run
to check overall project status before running commandsunityctl status - Always run
after modifying C# files before entering play modeunityctl asset refresh - For script execution, write scripts to
and execute withtmp/<scriptname>.cs-f
Troubleshooting
Run
unityctl status first to diagnose issues.
| Problem | Solution |
|---|---|
| Bridge not responding | then |
| Editor not connected to newly started bridge | Normal, editor plugin uses exponential backoff, up to 30 seconds |
| Connection lost after compile | Normal - domain reload. Auto-reconnects. |
| "Project not found" | Run from project directory or use flag |
| Editor not found | Use to specify Unity executable |