Skip to content

Commit eb16769

Browse files
committed
Initial commit on QoL patch
1 parent 1000228 commit eb16769

17 files changed

Lines changed: 1192 additions & 20 deletions

File tree

.claude/skills/unity-mcp-skill/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,11 @@ uri="file:///full/path/to/file.cs"
178178

179179
| Category | Key Tools | Use For |
180180
|----------|-----------|---------|
181-
| **Scene** | `manage_scene`, `find_gameobjects` | Scene operations, finding objects |
181+
| **Scene** | `manage_scene`, `find_gameobjects` | Scene operations, finding objects. Multi-scene editing (additive load, close, set active, move GO between scenes), `modify_build_settings`, scene templates (`3d_basic`, `2d_basic`, `empty`, `default`), scene validation with `auto_repair`. |
182182
| **Objects** | `manage_gameobject`, `manage_components` | Creating/modifying GameObjects |
183183
| **Scripts** | `create_script`, `script_apply_edits`, `validate_script` | C# code management (auto-refreshes on create/edit) |
184184
| **Assets** | `manage_asset`, `manage_prefabs` | Asset operations. **Prefab instantiation** is done via `manage_gameobject(action="create", prefab_path="...")`, not `manage_prefabs`. |
185-
| **Editor** | `manage_editor`, `execute_menu_item`, `read_console` | Editor control, package deployment (`deploy_package`/`restore_package` actions) |
185+
| **Editor** | `manage_editor`, `execute_menu_item`, `read_console` | Editor control, package deployment (`deploy_package`/`restore_package`), undo/redo (`undo`/`redo` actions) |
186186
| **Testing** | `run_tests`, `get_test_job` | Unity Test Framework |
187187
| **Batch** | `batch_execute` | Parallel/bulk operations |
188188
| **Camera** | `manage_camera` | Camera management (Unity Camera + Cinemachine). **Tier 1** (always available): create, target, lens, priority, list, screenshot. **Tier 2** (requires `com.unity.cinemachine`): brain, body/aim/noise pipeline, extensions, blending, force/release. 7 presets: follow, third_person, freelook, dolly, static, top_down, side_scroller. Resource: `mcpforunity://scene/cameras`. Use `ping` to check Cinemachine availability. See [tools-reference.md](references/tools-reference.md#camera-tools). |

.claude/skills/unity-mcp-skill/references/tools-reference.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,30 @@ manage_scene(action="get_build_settings") # Build settings
175175
manage_scene(action="create", name="NewScene", path="Assets/Scenes/")
176176
manage_scene(action="load", path="Assets/Scenes/Main.unity")
177177
manage_scene(action="save")
178+
179+
# Scene templates — create with preset objects
180+
manage_scene(action="create", name="Level1", template="3d_basic") # Camera + Light + Ground
181+
manage_scene(action="create", name="Level2", template="2d_basic") # Camera (ortho) + Light
182+
manage_scene(action="create", name="Empty", template="empty") # No default objects
183+
manage_scene(action="create", name="Default", template="default") # Camera + Light (Unity default)
184+
185+
# Multi-scene editing
186+
manage_scene(action="load", path="Assets/Scenes/Level2.unity", additive=True) # Keep current scene
187+
manage_scene(action="get_loaded_scenes") # List all loaded scenes
188+
manage_scene(action="set_active_scene", scene_name="Level2") # Set active scene
189+
manage_scene(action="close_scene", scene_name="Level2") # Unload scene
190+
manage_scene(action="close_scene", scene_name="Level2", remove_scene=True) # Fully remove
191+
manage_scene(action="move_to_scene", target="Player", scene_name="Level2") # Move root GO
192+
193+
# Build settings management (consolidated)
194+
manage_scene(action="modify_build_settings", scene_path="Assets/Scenes/Level2.unity", operation="add")
195+
manage_scene(action="modify_build_settings", scene_path="Assets/Scenes/Old.unity", operation="remove")
196+
manage_scene(action="modify_build_settings", scene_path="Assets/Scenes/Debug.unity",
197+
operation="set_enabled", enabled=False)
198+
199+
# Scene validation
200+
manage_scene(action="validate") # Detect missing scripts, broken prefabs
201+
manage_scene(action="validate", auto_repair=True) # Also auto-fix missing scripts (undoable)
178202
```
179203

180204
### find_gameobjects
@@ -691,7 +715,7 @@ manage_ui(
691715

692716
### manage_editor
693717

694-
Control Unity Editor state.
718+
Control Unity Editor state, undo/redo.
695719

696720
```python
697721
manage_editor(action="play") # Enter play mode
@@ -708,6 +732,10 @@ manage_editor(action="remove_layer", layer_name="OldLayer")
708732

709733
manage_editor(action="close_prefab_stage") # Exit prefab editing mode back to main scene
710734

735+
# Undo/Redo — returns the affected undo group name
736+
manage_editor(action="undo") # Undo last action
737+
manage_editor(action="redo") # Redo last undone action
738+
711739
# Package deployment (no confirmation dialog — designed for LLM-driven iteration)
712740
manage_editor(action="deploy_package") # Copy configured MCPForUnity source into installed package
713741
manage_editor(action="restore_package") # Revert to pre-deployment backup

MCPForUnity/Editor/Tools/ManageEditor.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,38 @@ public static object HandleCommand(JObject @params)
145145
case "restore_package":
146146
return RestorePackage();
147147

148+
// Undo/Redo
149+
case "undo":
150+
{
151+
string groupName = Undo.GetCurrentGroupName();
152+
Undo.PerformUndo();
153+
string message = string.IsNullOrEmpty(groupName)
154+
? "Undo performed (stack may be empty)."
155+
: $"Undid: {groupName}";
156+
if (EditorApplication.isPlaying)
157+
message += " Warning: undo during play mode may have unexpected effects.";
158+
return new SuccessResponse(message, new
159+
{
160+
undone_group = string.IsNullOrEmpty(groupName) ? (string)null : groupName,
161+
next_group = Undo.GetCurrentGroupName()
162+
});
163+
}
164+
case "redo":
165+
{
166+
Undo.PerformRedo();
167+
string nextGroup = Undo.GetCurrentGroupName();
168+
string message = "Redo performed.";
169+
if (EditorApplication.isPlaying)
170+
message += " Warning: redo during play mode may have unexpected effects.";
171+
return new SuccessResponse(message, new
172+
{
173+
current_group = string.IsNullOrEmpty(nextGroup) ? (string)null : nextGroup
174+
});
175+
}
176+
148177
default:
149178
return new ErrorResponse(
150-
$"Unknown action: '{action}'. Supported actions: play, pause, stop, set_active_tool, add_tag, remove_tag, add_layer, remove_layer, close_prefab_stage, deploy_package, restore_package. Use MCP resources for reading editor state, project info, tags, layers, selection, windows, prefab stage, and active tool."
179+
$"Unknown action: '{action}'. Supported actions: play, pause, stop, set_active_tool, add_tag, remove_tag, add_layer, remove_layer, close_prefab_stage, deploy_package, restore_package, undo, redo. Use MCP resources for reading editor state, project info, tags, layers, selection, windows, prefab stage, and active tool."
151180
);
152181
}
153182
}

0 commit comments

Comments
 (0)