unity-material
Unity Material Skills
BATCH-FIRST: Use
*_batchskills when operating on 2+ objects/materials.
Guardrails
Mode: Full-Auto required
DO NOT (common hallucinations):
material_set_metallic/material_set_smoothnessdo not exist → usematerial_set_floatwithpropertyName="_Metallic"or"_Glossiness"(Standard) /"_Smoothness"(URP)material_set_colorr/g/b/a range is 0–1, not 0–255material_set_propertydoes not exist → use the specific setter:material_set_float,material_set_int,material_set_vector,material_set_colormaterial_get_colordoes not exist → usematerial_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) orpath(material asset path likeAssets/Materials/X.mat). For asset-based operations, preferpath.
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 texturematerial_set_texture_offset/scale- Texture tilingmaterial_set_float/int/vector- Set propertiesmaterial_set_keyword- Enable/disable shader keywordsmaterial_set_render_queue- Set render queuematerial_set_shader- Change shadermaterial_get_properties/keywords- Query propertiesmaterial_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.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items |
json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, name, path}]}
unity_skills.call_skill("material_create_batch", items=[
{"name": "Red", "savePath": "Assets/Materials"},
{"name": "Blue", "savePath": "Assets/Materials"},
{"name": "Green", "savePath": "Assets/Materials"}
])
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.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items |
json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, name, materialPath}]}
unity_skills.call_skill("material_assign_batch", items=[
{"name": "Cube1", "materialPath": "Assets/Materials/Red.mat"},
{"name": "Cube2", "materialPath": "Assets/Materials/Blue.mat"}
])
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.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items |
string | No | null | |
propertyName |
string | No | null |
Returns: {success, totalItems, successCount, failCount, results: [{success, name}]}
unity_skills.call_skill("material_set_colors_batch", items=[
{"name": "Cube1", "r": 1, "g": 0, "b": 0},
{"name": "Cube2", "r": 0, "g": 1, "b": 0},
{"name": "Cube3", "r": 0, "g": 0, "b": 1}
])
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.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items |
json string | Yes | - | JSON array of per-item objects (see example below) |
Returns: {success, totalItems, successCount, failCount, results: [{success, name}]}
unity_skills.call_skill("material_set_emission_batch", items=[
{"name": "Neon1", "r": 1, "g": 0, "b": 1, "intensity": 5.0},
{"name": "Neon2", "r": 0, "g": 1, "b": 1, "intensity": 5.0}
])
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
import unity_skills
# BAD: 6 API calls
unity_skills.call_skill("material_create", name="Mat1", savePath="Assets/Materials")
unity_skills.call_skill("material_create", name="Mat2", savePath="Assets/Materials")
unity_skills.call_skill("material_set_color", path="Assets/Materials/Mat1.mat", r=1, g=0, b=0)
unity_skills.call_skill("material_set_color", path="Assets/Materials/Mat2.mat", r=0, g=0, b=1)
unity_skills.call_skill("material_assign", name="Cube1", materialPath="Assets/Materials/Mat1.mat")
unity_skills.call_skill("material_assign", name="Cube2", materialPath="Assets/Materials/Mat2.mat")
# GOOD: 3 API calls
unity_skills.call_skill("material_create_batch", items=[
{"name": "Mat1", "savePath": "Assets/Materials"},
{"name": "Mat2", "savePath": "Assets/Materials"}
])
unity_skills.call_skill("material_set_colors_batch", items=[
{"path": "Assets/Materials/Mat1.mat", "r": 1, "g": 0, "b": 0},
{"path": "Assets/Materials/Mat2.mat", "r": 0, "g": 0, "b": 1}
])
unity_skills.call_skill("material_assign_batch", items=[
{"name": "Cube1", "materialPath": "Assets/Materials/Mat1.mat"},
{"name": "Cube2", "materialPath": "Assets/Materials/Mat2.mat"}
])
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
Exact Signatures
Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.
More from besty0728/unity-skills
unity-skills
Unity Editor automation via REST API — create scripts, analyze scenes, manage assets, control editor, and orchestrate workflows. Triggers: Unity, Unity Skills, in Unity, automate Unity, editor automation, create script, scene summary, build scene, 全自动模式, full auto, semi-auto, 半自动, Unity自动化, Unity编辑器, Unity技能, 操作Unity,在Unity中.
56unity-uitoolkit
UI Toolkit (UITK) for Unity — create/edit USS stylesheets and UXML layouts, configure UIDocument in scenes. Triggers: UI Toolkit, UITK, UXML, USS, UIDocument, PanelSettings, VisualElement, stylesheet, runtime UI, EditorWindow UI, 界面工具包, UI样式, 样式表, 可视化元素.
22unity-ui
Unity UI creation. Use when users want to create Canvas, Button, Text, Image, or other UI elements. Triggers: UI, canvas, button, text, image, panel, slider, toggle, UGUI, 界面, 按钮, 文本, 面板.
20unity-scriptableobject
ScriptableObject management. Use when users want to create, read, or modify ScriptableObject assets. Triggers: scriptableobject, SO, data asset, config, settings asset, 数据资产, 配置文件.
19unity-editor
Unity Editor control. Use when users want to enter play mode, select objects, undo/redo, or execute menu commands. Triggers: play, stop, pause, select, undo, redo, menu, editor, Unity编辑器, Unity播放, Unity撤销, Unity选择.
18unity-light
Unity lighting control. Use when users want to create or configure lights (Directional, Point, Spot, Area). Triggers: light, lighting, directional light, point light, spot light, shadows, intensity, 灯光, 光照, 阴影.
17