Files
gh-dev-gom-claude-code-mark…/skills/references/COMMANDS_MENU.md
2025-11-29 18:19:28 +08:00

256 lines
5.6 KiB
Markdown

# Menu Execution Commands
Unity Editor의 메뉴 항목을 프로그래밍 방식으로 실행하고 조회할 수 있는 명령어입니다.
## Available Commands
| Command | Description |
|---------|-------------|
| `menu run` | Execute a Unity Editor menu item by path |
| `menu list` | List available menu items with optional filtering |
---
## menu run
Unity Editor 메뉴 항목을 경로로 실행합니다.
### Usage
```bash
cd <unity-project-root> && node .unity-websocket/uw menu run <menuPath> [options]
```
### Parameters
- `<menuPath>` - Menu item path (e.g., "Window/General/Console", "Assets/Refresh")
### Options
- `--json` - Output in JSON format
- `--timeout <ms>` - WebSocket connection timeout in milliseconds (default: 30000)
### Examples
```bash
# Open Console window
cd <unity-project-root> && node .unity-websocket/uw menu run "Window/General/Console"
# Refresh AssetDatabase
cd <unity-project-root> && node .unity-websocket/uw menu run "Assets/Refresh"
# Open Project Settings
cd <unity-project-root> && node .unity-websocket/uw menu run "Edit/Project Settings..."
# JSON output
cd <unity-project-root> && node .unity-websocket/uw menu run "Window/General/Inspector" --json
```
### Response
**Success:**
```json
{
"success": true,
"menuPath": "Window/General/Console",
"message": "Menu item 'Window/General/Console' executed successfully"
}
```
**Error:**
```json
{
"error": "Menu item not found: Invalid/Menu/Path"
}
```
### Notes
- Menu path must match exactly (case-sensitive)
- Some menu items may require specific Unity Editor states
- Menu execution is synchronous - waits for completion
- Not all menu items can be executed programmatically
---
## menu list
사용 가능한 Unity Editor 메뉴 항목을 조회합니다.
### Usage
```bash
cd <unity-project-root> && node .unity-websocket/uw menu list [options]
```
### Options
- `--filter <pattern>` - Filter menu items by pattern (supports * wildcard)
- `--json` - Output in JSON format
- `--timeout <ms>` - WebSocket connection timeout in milliseconds (default: 30000)
### Examples
```bash
# List all known menu items
cd <unity-project-root> && node .unity-websocket/uw menu list
# Filter by pattern (wildcard)
cd <unity-project-root> && node .unity-websocket/uw menu list --filter "*Window*"
cd <unity-project-root> && node .unity-websocket/uw menu list --filter "Assets/*"
cd <unity-project-root> && node .unity-websocket/uw menu list --filter "*General*"
# JSON output
cd <unity-project-root> && node .unity-websocket/uw menu list --filter "*Console*" --json
```
### Response
**Success:**
```json
{
"success": true,
"menuItems": [
"Window/General/Console",
"Window/General/Inspector",
"Window/General/Hierarchy",
"Window/General/Project",
"Assets/Refresh",
"Edit/Project Settings..."
],
"count": 6,
"filter": "*General*"
}
```
### Filter Patterns
- `*pattern` - Ends with pattern
- `pattern*` - Starts with pattern
- `*pattern*` - Contains pattern
- `pattern` - Exact match or contains
### Notes
- Returns a predefined list of common Unity menu items
- Wildcard filtering is case-insensitive
- Some menu items may vary by Unity version
- Use exact menu paths with `menu run` command
---
## Common Menu Paths
### Window Menu
```
Window/General/Console
Window/General/Inspector
Window/General/Hierarchy
Window/General/Project
Window/General/Scene
Window/General/Game
Window/Analysis/Profiler
Window/Package Manager
```
### Assets Menu
```
Assets/Refresh
Assets/Reimport
Assets/Reimport All
Assets/Find References In Scene
```
### Edit Menu
```
Edit/Project Settings...
Edit/Preferences...
Edit/Play
Edit/Pause
Edit/Step
```
### GameObject Menu
```
GameObject/Create Empty
GameObject/Create Empty Child
GameObject/3D Object/Cube
GameObject/3D Object/Sphere
GameObject/Light/Directional Light
```
---
## Use Cases
### 1. Open Editor Windows
```bash
# Open Console for debugging
cd <unity-project-root> && node .unity-websocket/uw menu run "Window/General/Console"
# Open Profiler for performance analysis
cd <unity-project-root> && node .unity-websocket/uw menu run "Window/Analysis/Profiler"
```
### 2. Asset Management
```bash
# Refresh AssetDatabase after external changes
cd <unity-project-root> && node .unity-websocket/uw menu run "Assets/Refresh"
# Reimport all assets
cd <unity-project-root> && node .unity-websocket/uw menu run "Assets/Reimport All"
```
### 3. Editor Settings
```bash
# Open Project Settings
cd <unity-project-root> && node .unity-websocket/uw menu run "Edit/Project Settings..."
# Open Preferences
cd <unity-project-root> && node .unity-websocket/uw menu run "Edit/Preferences..."
```
### 4. Playmode Control
```bash
# Enter Play mode
cd <unity-project-root> && node .unity-websocket/uw menu run "Edit/Play"
# Pause
cd <unity-project-root> && node .unity-websocket/uw menu run "Edit/Pause"
# Step frame
cd <unity-project-root> && node .unity-websocket/uw menu run "Edit/Step"
```
---
## Error Handling
### Menu Not Found
```
Error: Menu item not found: Invalid/Path
```
**Solution**: Use `menu list` to find valid menu paths
### Menu Execution Failed
```
Error: Failed to execute menu: <reason>
```
**Solution**: Check Unity Editor state and menu item availability
### Connection Failed
```
Error: Unity server not running
```
**Solution**: Ensure Unity Editor WebSocket server is running
---
## Best Practices
1. **Verify Menu Paths**: Use `menu list` to verify correct paths
2. **Case Sensitivity**: Menu paths are case-sensitive
3. **Error Handling**: Always check response for success/error
4. **Timeout**: Increase timeout for slow menu operations
5. **JSON Output**: Use `--json` for programmatic parsing