unity-asset-management

akiojin's avatarfrom akiojin

Supports creating, editing, and managing Unity assets (prefabs, materials, asset database, Addressables). Includes dependency analysis and import settings. Use when: prefab creation, material editing, asset search, dependency analysis, Addressables

⭐2stars🔀0forks📁View on GitHub🕐Updated Dec 29, 2025⬇️1downloads

When & Why to Use This Skill

This Claude skill empowers Unity developers to programmatically manage the entire asset lifecycle within the Unity Editor. It provides a robust suite of tools for creating and modifying prefabs and materials, executing advanced asset database searches, performing recursive dependency analysis, and orchestrating the Addressables system. By automating repetitive editor tasks and ensuring consistency in import settings, it significantly enhances development workflow efficiency and project maintainability.

Use Cases

  • Automated Asset Pipeline: Rapidly convert scene GameObjects into prefabs and instantiate them with precise transform data, reducing manual drag-and-drop errors.
  • Material & Shader Management: Batch create and update materials with specific shader properties (Standard, URP, etc.) to maintain visual consistency across large-scale environments.
  • Project Optimization & Cleanup: Identify unused assets, detect circular dependencies, and analyze the size impact of specific prefabs to optimize build sizes and performance.
  • Addressables Orchestration: Programmatically manage Addressable groups, labels, and entries, and trigger builds for multiple platforms directly through the AI agent.
  • Import Standardization: Enforce consistent import settings for textures and audio files using presets, ensuring all assets meet project quality and performance standards.
nameunity-asset-management
descriptionSupports creating, editing, and managing Unity assets (prefabs, materials, asset database, Addressables). Includes dependency analysis and import settings. Use when: prefab creation, material editing, asset search, dependency analysis, Addressables
allowed-toolsRead, Grep, Glob

Unity Asset Management

A guide for managing prefabs, materials, asset database, and Addressables.

Quick Start

1. Create and Place Prefabs

// Create prefab from GameObject
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  gameObjectPath: "/Enemy"
})

// Instantiate prefab in scene
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  position: { x: 5, y: 0, z: 0 },
  name: "Enemy_01"
})

2. Create Material

// Create basic material
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/RedMetal.mat",
  shader: "Standard",
  properties: {
    "_Color": [1, 0, 0, 1],
    "_Metallic": 0.8,
    "_Glossiness": 0.6
  }
})

3. Search Assets

// Search for textures
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Texture2D"
})

Prefab Management

Create Prefab

// Create prefab from scene GameObject
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab",
  gameObjectPath: "/Player"
})

// Create empty prefab
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Empty.prefab",
  createFromTemplate: true
})

// Allow overwrite
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab",
  gameObjectPath: "/Player",
  overwrite: true
})

Prefab Mode (Editing)

// Open prefab
mcp__unity-mcp-server__open_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab"
})

// Focus on specific object
mcp__unity-mcp-server__open_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab",
  focusObject: "Weapon",  // Relative path from prefab root
  isolateObject: true
})

// Edit in prefab mode (component operations, etc.)
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Player",  // In prefab mode, prefab root is the root
  componentType: "AudioSource"
})

// Save and exit prefab mode
mcp__unity-mcp-server__save_prefab()
mcp__unity-mcp-server__exit_prefab_mode({ saveChanges: true })

// Exit without saving
mcp__unity-mcp-server__exit_prefab_mode({ saveChanges: false })

Prefab Instantiation

// Basic instantiation
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab"
})

// With Transform
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  position: { x: 10, y: 0, z: 5 },
  rotation: { x: 0, y: 90, z: 0 },
  name: "Enemy_Guard"
})

// With parent object
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Coin.prefab",
  parent: "/Collectibles",
  position: { x: 0, y: 1, z: 0 }
})

Prefab Modification

// Change properties (also apply to instances)
mcp__unity-mcp-server__modify_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  modifications: {
    "health": 150,
    "speed": 3.5
  },
  applyToInstances: true
})

// Do not apply to instances
mcp__unity-mcp-server__modify_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  modifications: { "debugMode": true },
  applyToInstances: false
})

Material Management

Create Material

// Standard shader
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/Metal.mat",
  shader: "Standard",
  properties: {
    "_Color": [0.8, 0.8, 0.8, 1],
    "_Metallic": 1.0,
    "_Glossiness": 0.9
  }
})

// Unlit shader
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/Unlit.mat",
  shader: "Unlit/Color",
  properties: {
    "_Color": [1, 0, 0, 1]
  }
})

// URP shader
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/URPLit.mat",
  shader: "Universal Render Pipeline/Lit",
  properties: {
    "_BaseColor": [1, 1, 1, 1],
    "_Smoothness": 0.5
  }
})

// Copy existing material
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/MetalRed.mat",
  copyFrom: "Assets/Materials/Metal.mat",
  properties: {
    "_Color": [1, 0, 0, 1]
  }
})

Modify Material

// Change properties
mcp__unity-mcp-server__modify_material({
  materialPath: "Assets/Materials/Metal.mat",
  properties: {
    "_Color": [0, 0, 1, 1],
    "_Metallic": 0.5
  }
})

// Change shader
mcp__unity-mcp-server__modify_material({
  materialPath: "Assets/Materials/Debug.mat",
  shader: "Unlit/Color",
  properties: {
    "_Color": [1, 0, 1, 1]
  }
})

Common Shader Properties

Shader Property Description
Standard _Color Albedo color [R,G,B,A]
Standard _Metallic Metallic value 0-1
Standard _Glossiness Smoothness 0-1
Standard _MainTex Albedo texture
Standard _BumpMap Normal map
Standard _EmissionColor Emission color
URP/Lit _BaseColor Base color
URP/Lit _Smoothness Smoothness
URP/Lit _BaseMap Base texture

Asset Database Operations

Search Assets

// Type filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Texture2D"
})

// Name filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "Player"
})

// Label filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "l:UI"
})

// Combined filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Material Player"
})

// Folder specification
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Prefab",
  searchInFolders: ["Assets/Prefabs", "Assets/Characters"]
})

Filter Syntax

Filter Description Example
t:Type Search by type t:Texture2D, t:Material, t:Prefab
l:Label Search by label l:UI, l:Environment
name Search by name Player, Enemy*
Combined AND with space t:Material Red

Get Asset Info

mcp__unity-mcp-server__manage_asset_database({
  action: "get_asset_info",
  assetPath: "Assets/Textures/Player.png"
})
// Returns: type, size, dependencies, labels, etc.

Folder Operations

// Create folder
mcp__unity-mcp-server__manage_asset_database({
  action: "create_folder",
  folderPath: "Assets/NewFeature/Prefabs"
})

Move, Copy, Delete Assets

// Move
mcp__unity-mcp-server__manage_asset_database({
  action: "move_asset",
  fromPath: "Assets/Old/Player.prefab",
  toPath: "Assets/New/Player.prefab"
})

// Copy
mcp__unity-mcp-server__manage_asset_database({
  action: "copy_asset",
  fromPath: "Assets/Templates/Enemy.prefab",
  toPath: "Assets/Enemies/Enemy_01.prefab"
})

// Delete
mcp__unity-mcp-server__manage_asset_database({
  action: "delete_asset",
  assetPath: "Assets/Unused/OldPrefab.prefab"
})

Refresh and Save

// Refresh asset database
mcp__unity-mcp-server__manage_asset_database({
  action: "refresh"
})

// Save all assets
mcp__unity-mcp-server__manage_asset_database({
  action: "save"
})

Dependency Analysis

Get Dependencies

// Get asset dependencies
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "get_dependencies",
  assetPath: "Assets/Prefabs/Player.prefab",
  recursive: true  // Include indirect dependencies
})

Get Dependents

// Find assets that reference this asset
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "get_dependents",
  assetPath: "Assets/Materials/PlayerMat.mat"
})

Detect Circular Dependencies

mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "analyze_circular"
})

Detect Unused Assets

mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "find_unused",
  includeBuiltIn: false
})

Analyze Size Impact

// Total size of asset and its dependencies
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "analyze_size_impact",
  assetPath: "Assets/Prefabs/Boss.prefab"
})

Validate References

// Detect broken references
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "validate_references"
})

Addressables System

Entry Management

// Add entry
mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  groupName: "Enemies",
  address: "enemy_basic",
  labels: ["combat", "spawn"]
})

// Remove entry
mcp__unity-mcp-server__addressables_manage({
  action: "remove_entry",
  assetPath: "Assets/Prefabs/OldEnemy.prefab"
})

// Change address
mcp__unity-mcp-server__addressables_manage({
  action: "set_address",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  newAddress: "enemy_soldier"
})

// Add label
mcp__unity-mcp-server__addressables_manage({
  action: "add_label",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  label: "boss"
})

// Remove label
mcp__unity-mcp-server__addressables_manage({
  action: "remove_label",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  label: "combat"
})

// Move entry to different group
mcp__unity-mcp-server__addressables_manage({
  action: "move_entry",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  targetGroupName: "BossEnemies"
})

Group Management

// List groups
mcp__unity-mcp-server__addressables_manage({
  action: "list_groups"
})

// List entries in group
mcp__unity-mcp-server__addressables_manage({
  action: "list_entries",
  groupName: "Enemies",
  pageSize: 50,
  offset: 0
})

// Create group
mcp__unity-mcp-server__addressables_manage({
  action: "create_group",
  groupName: "DLC_01"
})

// Remove group
mcp__unity-mcp-server__addressables_manage({
  action: "remove_group",
  groupName: "OldGroup"
})

Addressables Build

// Build
mcp__unity-mcp-server__addressables_build({
  action: "build",
  buildTarget: "StandaloneWindows64"
})

// Clean build (delete cache then build)
mcp__unity-mcp-server__addressables_build({
  action: "clean_build"
})

Addressables Analysis

// Detect duplicate assets
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_duplicates",
  pageSize: 20
})

// Analyze dependencies
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_dependencies",
  assetPath: "Assets/Prefabs/Player.prefab"
})

// Detect unused assets
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_unused",
  pageSize: 50
})

Import Settings

Get Import Settings

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "get",
  assetPath: "Assets/Textures/Player.png"
})

Texture Settings

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "modify",
  assetPath: "Assets/Textures/Player.png",
  settings: {
    maxTextureSize: 1024,
    textureCompression: "Compressed",
    filterMode: "Bilinear",
    generateMipMaps: true,
    sRGBTexture: true
  }
})

Audio Settings

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "modify",
  assetPath: "Assets/Audio/BGM.mp3",
  settings: {
    loadType: "Streaming",
    compressionFormat: "Vorbis",
    quality: 0.7,
    sampleRateSetting: "PreserveSampleRate"
  }
})

Apply Preset

// Apply saved preset
mcp__unity-mcp-server__manage_asset_import_settings({
  action: "apply_preset",
  assetPath: "Assets/Textures/UI_Icon.png",
  preset: "UISprite"
})

Reimport

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "reimport",
  assetPath: "Assets/Textures/Player.png"
})

Common Workflows

Prefab Workflow

// 1. Build GameObject in scene
mcp__unity-mcp-server__create_gameobject({
  name: "NewEnemy",
  primitiveType: "capsule"
})

mcp__unity-mcp-server__add_component({
  gameObjectPath: "/NewEnemy",
  componentType: "Rigidbody"
})

// 2. Convert to prefab
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Enemies/NewEnemy.prefab",
  gameObjectPath: "/NewEnemy"
})

// 3. Delete original in scene
mcp__unity-mcp-server__delete_gameobject({
  path: "/NewEnemy"
})

// 4. Instantiate from prefab
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemies/NewEnemy.prefab",
  position: { x: 0, y: 0, z: 0 }
})

Material Variations

// Create base material
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/Enemy_Base.mat",
  shader: "Standard",
  properties: {
    "_Metallic": 0.2,
    "_Glossiness": 0.5
  }
})

// Create variations
const colors = [
  { name: "Red", color: [1, 0, 0, 1] },
  { name: "Blue", color: [0, 0, 1, 1] },
  { name: "Green", color: [0, 1, 0, 1] }
]

for (const variant of colors) {
  mcp__unity-mcp-server__create_material({
    materialPath: `Assets/Materials/Enemy_${variant.name}.mat`,
    copyFrom: "Assets/Materials/Enemy_Base.mat",
    properties: { "_Color": variant.color }
  })
}

Addressables Setup

// 1. Create group
mcp__unity-mcp-server__addressables_manage({
  action: "create_group",
  groupName: "Characters"
})

// 2. Add assets
mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  assetPath: "Assets/Prefabs/Player.prefab",
  groupName: "Characters",
  address: "player",
  labels: ["player", "controllable"]
})

mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  assetPath: "Assets/Prefabs/NPC.prefab",
  groupName: "Characters",
  address: "npc_villager",
  labels: ["npc", "friendly"]
})

// 3. Build
mcp__unity-mcp-server__addressables_build({
  action: "build"
})

// 4. Analyze
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_duplicates"
})

Common Mistakes

1. Prefab Path Format

// ❌ No extension
prefabPath: "Assets/Prefabs/Player"

// ✅ .prefab extension required
prefabPath: "Assets/Prefabs/Player.prefab"

// ❌ Not starting with Assets
prefabPath: "Prefabs/Player.prefab"

// ✅ Start with Assets/
prefabPath: "Assets/Prefabs/Player.prefab"

2. Material Path Format

// ❌ No extension
materialPath: "Assets/Materials/Red"

// ✅ .mat extension required
materialPath: "Assets/Materials/Red.mat"

3. Forgetting to Exit Prefab Mode

// ✅ Always exit prefab mode
mcp__unity-mcp-server__open_prefab({ prefabPath: "..." })
// ... edit ...
mcp__unity-mcp-server__exit_prefab_mode({ saveChanges: true })

4. Forgetting to Refresh

// After modifying files externally
// ✅ Refresh to reflect changes
mcp__unity-mcp-server__manage_asset_database({
  action: "refresh"
})

5. Addressables Group Not Created

// ❌ Adding entry to non-existent group
mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  groupName: "NonExistent",  // Error
  ...
})

// ✅ Create group first
mcp__unity-mcp-server__addressables_manage({
  action: "create_group",
  groupName: "NewGroup"
})

mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  groupName: "NewGroup",
  ...
})

Tool Reference

Tool Purpose
create_prefab Create prefab
open_prefab Start prefab mode
exit_prefab_mode End prefab mode
save_prefab Save prefab
instantiate_prefab Instantiate prefab
modify_prefab Modify prefab
create_material Create material
modify_material Modify material
manage_asset_database Asset DB operations
analyze_asset_dependencies Dependency analysis
manage_asset_import_settings Import settings
addressables_manage Addressables management
addressables_build Addressables build
addressables_analyze Addressables analysis