| name | unity-material |
| description | Use when users want to create materials, set colors, textures, emission, or shader properties. |
Unity Material Skills
Overview
BATCH-FIRST: Use *_batch skills when operating on 2+ objects/materials.
Common Mistakes
DO NOT (common hallucinations):
material_set_metallic / material_set_smoothness do not exist → use material_set_float with propertyName="_Metallic" or "_Glossiness" (Standard) / "_Smoothness" (URP)
material_set_color r/g/b/a range is 0–1, not 0–255
material_set_property does not exist → use the specific setter: material_set_float, material_set_int, material_set_vector, material_set_color
material_get_color does not exist → use material_get_properties (returns all properties including colors)
Routing:
- For shader changes →
material_set_shader (this module)
- For texture tiling →
material_set_texture_scale / material_set_texture_offset
- Pipeline-specific property names differ: check Render Pipeline Compatibility table in this doc
Object Targeting: Single-object skills accept name (GameObject name) or path (material asset path like Assets/Materials/X.mat). For asset-based operations, prefer path.
Recipe path rule: ../../recipes/material/<command>.md
Skills Overview
| Single Object | Batch Version | Use Batch When |
|---|
material_create | material_create_batch | Creating 2+ materials |
material_assign | material_assign_batch | Assigning to 2+ objects |
material_set_color | material_set_colors_batch | Setting colors on 2+ objects |
material_set_emission | material_set_emission_batch | Setting emission on 2+ objects |
No batch needed:
material_set_texture - Set texture
material_set_texture_offset/scale - Texture tiling
material_set_float/int/vector - Set properties
material_set_keyword - Enable/disable shader keywords
material_set_render_queue - Set render queue
material_set_shader - Change shader
material_get_properties/keywords - Query properties
material_duplicate - Duplicate material
Skills
material_create
Create a new material (auto-detects render pipeline).
| Parameter | Type | Required | Default | Description |
|---|
name | string | Yes | - | Material name |
shaderName | string | No | auto-detect | Shader (auto-detects URP/HDRP/Standard) |
savePath | string | No | null | Save path (folder or full path) |
material_create_batch
Create multiple materials.
Returns: {success, totalItems, successCount, failCount, results: [{success, name, path}]}
material_assign
Assign material to object's renderer.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
instanceId | int | No* | Instance ID |
path | string | No* | Material asset path (for asset) |
materialPath | string | Yes | Material to assign |
material_assign_batch
Assign materials to multiple objects.
Returns: {success, totalItems, successCount, failCount, results: [{success, name, materialPath}]}
material_set_color
Set material color with optional HDR intensity.
| Parameter | Type | Required | Default | Description |
|---|
name | string | No* | GameObject name | |
path | string | No* | Material asset path | |
r, g, b | float | No | 1 | Color (0-1) |
a | float | No | 1 | Alpha |
propertyName | string | No | auto-detect | Color property |
intensity | float | No | 1.0 | HDR intensity (>1 for bloom) |
material_set_colors_batch
Set colors on multiple objects.
Returns: {success, totalItems, successCount, failCount, results: [{success, name}]}
material_set_emission
Set emission color with auto-enable keyword.
| Parameter | Type | Required | Default | Description |
|---|
name | string | No* | GameObject name | |
path | string | No* | Material asset path | |
r, g, b | float | No | 1 | Emission color (0-1) |
intensity | float | No | 1.0 | HDR intensity (>1 for bloom) |
enableEmission | bool | No | true | Auto-enable _EMISSION keyword |
material_set_emission_batch
Set emission on multiple objects.
Returns: {success, totalItems, successCount, failCount, results: [{success, name}]}
material_set_texture
Set material texture.
| Parameter | Type | Required | Default | Description |
|---|
name | string | No* | GameObject name | |
path | string | No* | Material asset path | |
texturePath | string | Yes | - | Texture asset path |
propertyName | string | No | auto-detect | Texture property |
material_set_float
Set a float property on a material.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
propertyName | string | Yes | Property name |
value | float | Yes | Value |
material_set_int
Set an integer property on a material.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
propertyName | string | Yes | Property name |
value | int | Yes | Value |
material_set_keyword
Enable/disable shader keywords.
| Parameter | Type | Required | Default | Description |
|---|
name | string | No* | GameObject name | |
path | string | No* | Material asset path | |
keyword | string | Yes | - | Keyword name |
enable | bool | No | true | Enable or disable |
Common Keywords: _EMISSION, _NORMALMAP, _METALLICGLOSSMAP, _ALPHATEST_ON, _ALPHABLEND_ON
material_get_properties
Get all material properties.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
Returns: {colors, floats, vectors, textures, integers, keywords, renderQueue}
material_get_keywords
Get all enabled shader keywords on a material.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
material_duplicate
Duplicate a material asset.
| Parameter | Type | Required | Description |
|---|
sourcePath | string | Yes | Source material path |
newName | string | Yes | Name for the duplicated material |
savePath | string | No | Optional folder/path override for the duplicated material |
material_set_shader
Change the shader of a material.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
shaderName | string | Yes | Shader name |
material_set_vector
Set a Vector4 property on a material.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
propertyName | string | Yes | Property name |
x, y, z, w | float | Yes | Vector components |
material_set_texture_offset
Set texture offset (tiling position).
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
propertyName | string | No | Texture property name |
x, y | float | Yes | Offset values |
material_set_texture_scale
Set texture scale (tiling).
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
propertyName | string | No | Texture property name |
x, y | float | Yes | Scale values |
material_set_render_queue
Set material render queue.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
renderQueue | int | Yes | Render queue value |
material_set_gi_flags
Set material global illumination flags.
| Parameter | Type | Required | Description |
|---|
name | string | No* | GameObject name |
path | string | No* | Material asset path |
flags | string | Yes | GI flags (None/Emissive/RealtimeEmissive/BakedEmissive) |
Example: Efficient Material Setup
See ../../recipes/material/README.md for per-command C# templates.
Render Pipeline Compatibility
Skills auto-detect and adapt to your render pipeline:
| Pipeline | Default Shader | Color Property | Texture Property |
|---|
| Built-in | Standard | _Color | _MainTex |
| URP | Universal Render Pipeline/Lit | _BaseColor | _BaseMap |
| HDRP | HDRP/Lit | _BaseColor | _BaseColorMap |
Best Practices
- Save materials as assets for reuse
- Use material instances (by name) for runtime changes
- Use material assets (by path) for persistent changes
- Check shader property names in Unity Inspector
- URP/HDRP have different property names than Standard