Skip to content
unity-scene logo

unity-scene

Unity scene management — create, load (single/additive), save, unload, switch active scene, get scene info/hierarchy, screenshot, search objects. Exact signatures via GET /skills/schema.

SKILL.md

Full skill instructions

Unity Scene Skills

Control Unity scenes - the containers that hold all your GameObjects.

Operating Mode

  • Approval:本模块 Mixed —— scene_get_info / scene_get_hierarchy / scene_get_loaded / scene_find_objects 标 SkillMode.SemiAuto,可直接执行;scene_screenshot / scene_unload / scene_set_active 未设 Mode 字段(默认 FullAuto),Approval 模式下需 grant。
  • Auto / Bypass:FullAuto 直接执行。
  • 含 NeverInSemi 高危 skill:scene_create / scene_load / scene_save(标 RiskLevel="high",因为切换/覆盖整个场景文件影响范围极大)。这些在 Approval/​Auto 下返 MODE_FORBIDDEN,仅 Bypass 或 Allowlist 命中可调。

DO NOT (common hallucinations):

  • scene_delete / scene_rename do not exist → delete scene files via asset_delete, rename via asset_move
  • scene_list does not exist → use scene_get_loaded (loaded scenes) or asset_find with t:Scene (all scene assets)
  • scene_find_objects is a simple name/​tag/​component filter; for regex/​layer/​path search use gameobject_find (SkillMode.FullAuto)

Routing:

  • For detailed hierarchy tree → use perception module's hierarchy_describe
  • For scene statistics → use perception module's scene_summarize
  • For screenshot → scene_screenshot (this module) or camera_screenshot (camera module, SkillMode.FullAuto)

Skills Overview

SkillDescription
scene_createCreate a new scene
scene_loadLoad a scene
scene_saveSave current scene
scene_get_infoGet scene information
scene_get_hierarchyGet hierarchy tree
scene_screenshotCapture screenshot
scene_get_loadedGet all loaded scenes
scene_unloadUnload an additive scene
scene_set_activeSet active scene
scene_find_objectsSearch objects by name/​tag/​component

Skills

scene_create

Create a new scene.

ParameterTypeRequiredDescription
scenePathstringYesPath for new scene (e.g., "Assets/​Scenes/​MyScene.unity")

scene_load

Load a scene.

ParameterTypeRequiredDefaultDescription
scenePathstringYes-Scene asset path
additiveboolNofalseLoad additively (keep current scene)

scene_save

Save the current scene.

ParameterTypeRequiredDescription
scenePathstringNoSave path (null = save current)

scene_get_info

Get current scene information.

No parameters.

Returns: {success, name, path, isDirty, rootObjectCount, rootObjects: [name]}

scene_get_hierarchy

Get full scene hierarchy tree.

ParameterTypeRequiredDefaultDescription
maxDepthintNo10Maximum hierarchy depth

Returns: {success, hierarchy: [{name, instanceId, children: [...]}]}

scene_screenshot

Capture a screenshot.

ParameterTypeRequiredDefaultDescription
filenamestringNo"screenshot.png"Output filename
widthintNo1920Image width
heightintNo1080Image height

scene_get_loaded

Get list of all currently loaded scenes.

No parameters.

Returns: {success, scenes: [{name, path, isActive, isDirty}]}

scene_unload

Unload a loaded scene (additive).

ParameterTypeRequiredDescription
sceneNamestringYesScene name to unload

scene_set_active

Set the active scene (for multi-scene editing).

ParameterTypeRequiredDescription
sceneNamestringYesScene name to set active

scene_find_objects

Search GameObjects by name pattern, tag, or component type. For advanced search (regex, layer, path) use gameobject_find.

ParameterTypeRequiredDefaultDescription
namePatternstringNo-Name substring to match (case-insensitive)
tagstringNo-Filter by tag
componentTypestringNo-Filter by component type name
limitintNo50Max results to return

Returns: {success, count, objects: [{name, path, instanceId, active, tag}]}


Example Usage

import unity_skills

# Create a new scene
unity_skills.call_skill("scene_create", scenePath="Assets/​Scenes/​Level1.unity")

# Load an existing scene
unity_skills.call_skill("scene_load", scenePath="Assets/​Scenes/​MainMenu.unity")

# Load scene additively (multi-scene)
unity_skills.call_skill("scene_load", scenePath="Assets/​Scenes/​UI.unity", additive=True)

# Get current scene info
info = unity_skills.call_skill("scene_get_info")
print(f"Scene: {info['name']}, Objects: {info['rootObjectCount']}")

# Get full hierarchy (useful for understanding scene structure)
hierarchy = unity_skills.call_skill("scene_get_hierarchy", maxDepth=5)

# Save scene
unity_skills.call_skill("scene_save")

# Take screenshot
unity_skills.call_skill("scene_screenshot", filename="preview.png", width=1920, height=1080)

Best Practices

  1. Always save before loading a new scene
  2. Use additive loading for UI overlays
  3. Keep scene hierarchy organized with empty parent objects
  4. Use scene_get_info to verify scene state
  5. Screenshots are saved to project root by default

Exact Signatures

Exact names, parameters, defaults, and returns are defined by GET /​skills/​schema or unity_skills.get_skill_schema(), not by this file.