Claude Code Plugins

Community-maintained marketplace

Feedback

unity-scene-management

@majiayu000/claude-skill-registry
5
0

Supports Unity scene and GameObject creation, management, and analysis. Efficiently performs hierarchy operations, component configuration, and scene analysis. Use when: scene creation, scene loading, GameObject creation, component addition, hierarchy retrieval, scene analysis

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md


name: unity-scene-management description: Supports Unity scene and GameObject creation, management, and analysis. Efficiently performs hierarchy operations, component configuration, and scene analysis. Use when: scene creation, scene loading, GameObject creation, component addition, hierarchy retrieval, scene analysis allowed-tools: Read, Grep, Glob

Unity Scene & GameObject Management

A guide for creating, managing, and analyzing Unity scenes, GameObjects, and components.

Quick Start

1. Check Current Scene State

// List loaded scenes
mcp__unity-mcp-server__list_scenes({ includeLoadedOnly: true })

// Current scene info
mcp__unity-mcp-server__get_scene_info({ includeGameObjects: true })

// Get hierarchy (lightweight)
mcp__unity-mcp-server__get_hierarchy({
  nameOnly: true,
  maxObjects: 100
})

2. Create GameObject

// Empty GameObject
mcp__unity-mcp-server__create_gameobject({
  name: "GameManager"
})

// Primitive
mcp__unity-mcp-server__create_gameobject({
  name: "Floor",
  primitiveType: "plane",
  position: { x: 0, y: 0, z: 0 },
  scale: { x: 10, y: 1, z: 10 }
})

3. Add Component

// Add Rigidbody
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Player",
  componentType: "Rigidbody",
  properties: { mass: 1.5, useGravity: true }
})

Scene Operations

Create Scene

// Create and load new scene
mcp__unity-mcp-server__create_scene({
  sceneName: "Level01",
  path: "Assets/Scenes/",
  loadScene: true,
  addToBuildSettings: true
})

Load Scene

// Single scene load (replaces current scene)
mcp__unity-mcp-server__load_scene({
  scenePath: "Assets/Scenes/MainMenu.unity",
  loadMode: "Single"
})

// Additive load (adds to current scene)
mcp__unity-mcp-server__load_scene({
  scenePath: "Assets/Scenes/UI.unity",
  loadMode: "Additive"
})

Save Scene

// Save current scene
mcp__unity-mcp-server__save_scene()

// Save as new file
mcp__unity-mcp-server__save_scene({
  scenePath: "Assets/Scenes/Level01_backup.unity",
  saveAs: true
})

List & Info

// All scenes in project
mcp__unity-mcp-server__list_scenes()

// Only scenes in build settings
mcp__unity-mcp-server__list_scenes({ includeBuildScenesOnly: true })

// Specific scene details
mcp__unity-mcp-server__get_scene_info({
  scenePath: "Assets/Scenes/Main.unity",
  includeGameObjects: true
})

GameObject Management

Creation Options

// Full specification
mcp__unity-mcp-server__create_gameobject({
  name: "Enemy",
  primitiveType: "cube",
  parentPath: "/Enemies",
  position: { x: 5, y: 1, z: 0 },
  rotation: { x: 0, y: 45, z: 0 },
  scale: { x: 1, y: 2, z: 1 },
  tag: "Enemy",
  layer: 8
})

Primitive Types

Type Description
cube Cube
sphere Sphere
cylinder Cylinder
capsule Capsule
plane Plane
quad Quad (2D plane)

Search

// Search by name
mcp__unity-mcp-server__find_gameobject({
  name: "Player",
  exactMatch: true
})

// Search by tag
mcp__unity-mcp-server__find_gameobject({
  tag: "Enemy"
})

// Search by layer
mcp__unity-mcp-server__find_gameobject({
  layer: 8  // 0-31
})

// Partial match search
mcp__unity-mcp-server__find_gameobject({
  name: "Spawn",
  exactMatch: false
})

Modify

// Transform change
mcp__unity-mcp-server__modify_gameobject({
  path: "/Player",
  position: { x: 0, y: 1, z: 0 },
  rotation: { x: 0, y: 90, z: 0 }
})

// Name, tag, layer change
mcp__unity-mcp-server__modify_gameobject({
  path: "/OldName",
  name: "NewName",
  tag: "Player",
  layer: 3
})

// Change parent object
mcp__unity-mcp-server__modify_gameobject({
  path: "/Player",
  parentPath: "/Characters"
})

// Unparent
mcp__unity-mcp-server__modify_gameobject({
  path: "/Characters/Player",
  parentPath: null
})

// Change active state
mcp__unity-mcp-server__modify_gameobject({
  path: "/Player",
  active: false
})

Delete

// Single delete
mcp__unity-mcp-server__delete_gameobject({
  path: "/OldObject"
})

// Multiple delete
mcp__unity-mcp-server__delete_gameobject({
  paths: ["/Object1", "/Object2", "/Object3"]
})

// Keep children
mcp__unity-mcp-server__delete_gameobject({
  path: "/Parent",
  includeChildren: false
})

Get Hierarchy

// Lightweight (names and paths only) - for large scenes
mcp__unity-mcp-server__get_hierarchy({
  nameOnly: true,
  maxObjects: 500
})

// Detailed (with components and transform) - for small scenes
mcp__unity-mcp-server__get_hierarchy({
  includeComponents: true,
  includeTransform: true,
  maxObjects: 50
})

// Specific subtree only
mcp__unity-mcp-server__get_hierarchy({
  rootPath: "/Enemies",
  maxDepth: 2
})

// Exclude inactive objects
mcp__unity-mcp-server__get_hierarchy({
  includeInactive: false
})

Component System

Add Component

// Basic addition
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Player",
  componentType: "Rigidbody"
})

// With properties
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Player",
  componentType: "BoxCollider",
  properties: {
    size: { x: 1, y: 2, z: 1 },
    center: { x: 0, y: 1, z: 0 },
    isTrigger: false
  }
})

// Custom script
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Player",
  componentType: "PlayerController"
})

Modify Component

modify_component - Batch change multiple properties

mcp__unity-mcp-server__modify_component({
  gameObjectPath: "/Player",
  componentType: "Rigidbody",
  properties: {
    mass: 2.0,
    drag: 0.5,
    useGravity: true
  }
})

set_component_field - Precise single field change

// Serialized field (including private)
mcp__unity-mcp-server__set_component_field({
  gameObjectPath: "/Player",
  componentType: "PlayerController",
  fieldPath: "_moveSpeed",
  value: 5.0
})

// Nested field
mcp__unity-mcp-server__set_component_field({
  gameObjectPath: "/Player",
  componentType: "PlayerController",
  fieldPath: "settings.jumpHeight",
  value: 3.0
})

// Array element
mcp__unity-mcp-server__set_component_field({
  gameObjectPath: "/Player",
  componentType: "Inventory",
  fieldPath: "items[0].count",
  value: 10
})

// Object reference
mcp__unity-mcp-server__set_component_field({
  gameObjectPath: "/Player",
  componentType: "PlayerController",
  fieldPath: "targetTransform",
  objectReference: { assetPath: "Assets/Prefabs/Target.prefab" }
})

// Enum value
mcp__unity-mcp-server__set_component_field({
  gameObjectPath: "/Player",
  componentType: "PlayerController",
  fieldPath: "state",
  enumValue: "Running"
})

modify_component vs set_component_field

Feature modify_component set_component_field
Use case Batch multiple properties Precise single field
Nested support ❌ Top-level only ✅ Dot notation
Array elements [index] supported
Private fields △ Serialized only ✅ All serialized
Object references ✅ assetPath/guid

List & Remove Component

// List components
mcp__unity-mcp-server__list_components({
  gameObjectPath: "/Player"
})

// Remove component
mcp__unity-mcp-server__remove_component({
  gameObjectPath: "/Player",
  componentType: "OldScript"
})

// When multiple of same type exist
mcp__unity-mcp-server__remove_component({
  gameObjectPath: "/Player",
  componentType: "AudioSource",
  componentIndex: 1  // Second AudioSource
})

Available Component Types

// Search by category
mcp__unity-mcp-server__get_component_types({
  category: "Physics"  // Physics, Rendering, UI, etc.
})

// Search by name
mcp__unity-mcp-server__get_component_types({
  search: "Collider"
})

// Only those addable via AddComponent
mcp__unity-mcp-server__get_component_types({
  onlyAddable: true
})

Scene Analysis

Analyze Entire Scene

// Object statistics
mcp__unity-mcp-server__analyze_scene_contents({
  groupByType: true,
  includePrefabInfo: true
})

// With memory info
mcp__unity-mcp-server__analyze_scene_contents({
  includeMemoryInfo: true
})

Component Search

// Find objects with specific component
mcp__unity-mcp-server__find_by_component({
  componentType: "Light",
  searchScope: "scene"
})

// Include prefabs in search
mcp__unity-mcp-server__find_by_component({
  componentType: "AudioSource",
  searchScope: "all",
  includeInactive: true
})

Detailed Inspection

// GameObject details
mcp__unity-mcp-server__get_gameobject_details({
  gameObjectName: "Player",
  includeComponents: true,
  includeMaterials: true,
  includeChildren: true,
  maxDepth: 3
})

// All component property values
mcp__unity-mcp-server__get_component_values({
  gameObjectName: "Player",
  componentType: "Rigidbody",
  includePrivateFields: true
})

// Object reference relationships
mcp__unity-mcp-server__get_object_references({
  gameObjectName: "Player",
  includeAssetReferences: true,
  includeHierarchyReferences: true
})

Common Workflows

Scene Setup

// 1. Create new scene
mcp__unity-mcp-server__create_scene({
  sceneName: "GameLevel",
  loadScene: true
})

// 2. Create environment objects
mcp__unity-mcp-server__create_gameobject({
  name: "Environment"
})

mcp__unity-mcp-server__create_gameobject({
  name: "Ground",
  primitiveType: "plane",
  parentPath: "/Environment",
  scale: { x: 50, y: 1, z: 50 }
})

// 3. Set up lighting
mcp__unity-mcp-server__create_gameobject({
  name: "Sun"
})

mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Sun",
  componentType: "Light",
  properties: {
    type: "Directional",
    intensity: 1.0,
    color: { r: 1, g: 0.95, b: 0.8, a: 1 }
  }
})

// 4. Save
mcp__unity-mcp-server__save_scene()

UI Canvas Setup

// Create Canvas
mcp__unity-mcp-server__create_gameobject({ name: "Canvas" })
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Canvas",
  componentType: "Canvas",
  properties: { renderMode: "ScreenSpaceOverlay" }
})
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Canvas",
  componentType: "CanvasScaler"
})
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Canvas",
  componentType: "GraphicRaycaster"
})

// Add button
mcp__unity-mcp-server__create_gameobject({
  name: "StartButton",
  parentPath: "/Canvas"
})
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Canvas/StartButton",
  componentType: "Button"
})

Physics Object Placement

// Create physics object
mcp__unity-mcp-server__create_gameobject({
  name: "PhysicsCube",
  primitiveType: "cube",
  position: { x: 0, y: 5, z: 0 }
})

// Add Rigidbody
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/PhysicsCube",
  componentType: "Rigidbody",
  properties: { mass: 1.0 }
})

// Collider is auto-added (for primitives)

Common Mistakes

1. Wrong Path Format

// ❌ Without slash
gameObjectPath: "Player"

// ✅ Leading slash required
gameObjectPath: "/Player"

// ✅ Hierarchy path
gameObjectPath: "/Parent/Child/GrandChild"

2. Undefined Tag/Layer

// ❌ Using non-existent tag
tag: "CustomEnemy"  // Error

// ✅ Add tag first
mcp__unity-mcp-server__manage_tags({
  action: "add",
  tagName: "CustomEnemy"
})

3. Missing Inactive Objects

// ❌ Cannot find inactive object
mcp__unity-mcp-server__find_gameobject({ name: "HiddenObject" })

// ✅ Explicitly include inactive
mcp__unity-mcp-server__get_hierarchy({
  includeInactive: true
})

4. Performance Issues with Large Hierarchy

// ❌ Getting all info (high token usage)
mcp__unity-mcp-server__get_hierarchy({
  includeComponents: true,
  includeTransform: true,
  maxObjects: -1  // Unlimited
})

// ✅ Lightweight for overview
mcp__unity-mcp-server__get_hierarchy({
  nameOnly: true,
  maxObjects: 100
})

// ✅ Get details only for specific object
mcp__unity-mcp-server__get_gameobject_details({
  gameObjectName: "SpecificObject",
  includeComponents: true
})

5. Losing Changes Without Save

// ✅ Save after important changes
mcp__unity-mcp-server__save_scene()

Tool Reference

Tool Purpose
create_scene Create scene
load_scene Load scene
save_scene Save scene
list_scenes List scenes
get_scene_info Get scene info
create_gameobject Create GameObject
find_gameobject Find GameObject
modify_gameobject Modify GameObject
delete_gameobject Delete GameObject
get_hierarchy Get hierarchy
add_component Add component
modify_component Modify component (batch)
set_component_field Modify field (precise)
remove_component Remove component
list_components List components
get_component_types List available types
analyze_scene_contents Analyze scene
find_by_component Find by component
get_gameobject_details Get detailed info
get_component_values Get property values
manage_tags Manage tags
manage_layers Manage layers