Skip to content
Development
Skill

/decal

Create and configure URP Decal Projectors

From plugin
unity-skills
1.9k83 skills4 commands

Claude Code

$ npx -y skills add Besty0728/Unity-Skills --skill decal --agent claude-code

SKILL.md

decal.SKILL.md
name: unity-decal
description: Create and configure URP Decal Projectors

Decal Skills

URP Decal Projector creation and configuration. URP only: the HDRP decal APIs are not covered here. Parameters come from the schema (`GET /skills/schema?category=Decal&wire=v2`); execution and dryRun rules: root [SKILL.md](../../SKILL.md).

When to use

  • Adding decals in URP
  • Configuring a Decal Projector
  • Enabling the Decal Renderer Feature

Rules

  • Call `decal_ensure_renderer_feature` before assuming the current URP renderer is decal-ready; it returns `alreadyExists: true` when the feature is present, so it is safe to repeat.
  • Use `decal_get_info` or `decal_find_all` to read the real projector state before editing.
  • `decal_set_properties` applies only the fields you pass; any invalid value rejects the whole call before anything is written.
  • When URP is not installed, every skill returns a stub `{ error: "Universal Render Pipeline package … is not installed." }` (`RenderPipelineSkillsCommon.NoURP()`). It is a diagnostic payload, not a permission denial.
  • For renderer feature management in general, use the `urp` module.

Pitfalls

  • `decal_get_info` and `decal_set_properties` need at least one locator (`name`, `entityId`, `instanceId` or `path`); an empty call is refused rather than reported as "not found".
  • `decal_set_properties_batch` expects `items` as a JSON array string.

Skills

`decal_create`

Create a Decal Projector.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `name` | string | No | "Decal Projector" | Name of the new GameObject | | `materialPath` | string | No | null | Decal material asset path; left unassigned when omitted | | `x` | float | No | 0 | World position X | | `y` | float | No | 0 | World position Y | | `z` | float | No | 0 | World position Z |

`decal_get_info`

Inspect a Decal Projector.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `name` | string | No* | null | GameObject name | | `entityId` | string | No* | null | GameObject entity ID (preferred; the only id on Unity 6000.4+) | | `instanceId` | int | No* | 0 | GameObject instance ID | | `path` | string | No* | null | GameObject hierarchy path |

\* Supply at least one locator — an empty call is refused up front rather than reported as "not found".

`decal_set_properties`

Modify Decal Projector properties. Every property below is applied only when supplied, so a call changes exactly the fields you name; any invalid value rejects the whole call before anything is written.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `name` | string | No* | null | GameObject name | | `entityId` | string | No* | null | GameObject entity ID (preferred; the only id on Unity 6000.4+) | | `instanceId` | int | No* | 0 | GameObject instance ID | | `path` | string | No* | null | GameObject hierarchy path | | `materialPath` | string | No | null | Decal material asset path | | `drawDistance` | float | No | null | Max distance at which the decal is drawn | | `fadeScale` | float | No | null | Fraction of `drawDistance` at which fading starts | | `fadeFactor` | float | No | null | Overall opacity multiplier | | `startAngleFade` | float | No | null | Angle (degrees) where angle-based fading begins | | `endAngleFade` | float | No | null | Angle (degrees) where angle-based fading completes | | `uvScale` | string | No | null | UV tiling as `"x,y"` | | `uvBias` | string | No | null | UV offset as `"x,y"` | | `size` | string | No | null | Projector box size as `"x,y,z"` | | `pivot` | string | No | null | Projector pivot offset as `"x,y,z"` | | `renderingLayerMask` | uint | No | null | Rendering layer mask bits | | `scaleMode` | string | No | null | `ScaleInvariant` or `InheritFromHierarchy` (other values, including bare numbers, are rejected) |

`decal_find_all`

List Decal Projectors in the scene.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `limit` | int | No | 50 | Max projectors returned |

`decal_delete`

Delete a Decal Projector GameObject.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `name` | string | No* | null | GameObject name | | `entityId` | string | No* | null | GameObject entity ID (preferred; the only id on Unity 6000.4+) | | `instanceId` | int | No* | 0 | GameObject instance ID | | `path` | string | No* | null | GameObject hierarchy path |

`decal_set_properties_batch`

Batch-edit Decal Projectors.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `items` | json string | Yes | - | JSON array of `{name, instanceId, path, entityId, materialPath, drawDistance, fadeScale, fadeFactor, startAngleFade, endAngleFade, uvScale, uvBias, size, pivot, renderingLayerMask, scaleMode}` — same per-item keys as `decal_set_properties` |

`decal_ensure_renderer_feature`

Ensure the target URP renderer has a DecalRendererFeature.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `assetPath` | string | No | null | URP asset path; the active URP asset is used when omitted | | `rendererIndex` | int | No | -1 | Renderer index within the URP asset; `-1` selects the asset's default renderer | | `rendererDataPath` | string | No | null | `UniversalRendererData` asset path — takes precedence over `rendererIndex`, and must belong to the resolved URP asset |

Returns `alreadyExists: true` when the feature was already present, so the call is safe to repeat.

Read more
@besty0728
Ships withunity-skills

REST API-based AI-driven Unity Editor Automation Engine Let AI control Unity scenes directly through Skills 🎉 We are now indexed by DeepWiki! Got questions? Check out the AI-generated docs → The current official maintenance baseline is Unity 2022.3+.

Stars on GitHub

Momentum

stars in total
1.9k
Star history of Besty0728/Unity-Skills on GitHub, a chart by star-history.com

Other skills on unity-skills.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about decal.

Which coding agents can use decal?
decal installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.