addressables-design
Source-anchored design rules for Unity Addressables 1.22.3/2.9.1
Create and configure URP Decal Projectors
Claude Code
$ npx -y skills add Besty0728/Unity-Skills --skill decal --agent claude-code
Codex
$ npx skills add Besty0728/Unity-Skills --skill decal -a codex -y
Cursor
$ npx skills add Besty0728/Unity-Skills --skill decal -a cursor -y
Gemini CLI
$ npx skills add Besty0728/Unity-Skills --skill decal -a gemini-cli -y
GitHub Copilot
$ npx skills add Besty0728/Unity-Skills --skill decal -a github-copilot -y
OpenCode
$ npx skills add Besty0728/Unity-Skills --skill decal -a opencode -y
Windsurf
$ npx skills add Besty0728/Unity-Skills --skill decal -a windsurf -y
name: unity-decal description: Create and configure URP Decal Projectors
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).
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 |
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".
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) |
List Decal Projectors in the scene.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `limit` | int | No | 50 | Max projectors returned |
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 |
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` |
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.
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+.
Source-anchored design rules for Unity Addressables 1.22.3/2.9.1
Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based)
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.