Material
Unity中的Material是用来定义一个物体外观的核心组件,它将Shader与各种Texture和属性值绑定到一起,决定了一个对象在场景中如何表现
Material的基本构成
Material包括:
1.Shader
- 决定了材质的渲染方式和它所支持的属性
- 常用Shader有:
Standard:支持金属、粗糙度工作流URP/Lit(Universal Render Pipeline)专用HDRP/Lit(High Definition Render Pipeline)专用Unlit:不受光照影响,用于UI、特效等- 自定义Shader
2.Texture
- 常见类型:
- Albedo(基础颜色贴图)
- Normal Map(法线贴图,增加表面细节)
- Metallic Map / Roughness Map(金属度/粗糙度贴图)
- Emission Map(自发光贴图)
- Occlusion Map(遮蔽贴图)
3.属性值
- 颜色、金属度、粗糙度、透明度
创建和使用Material
创建材质
右键 -> Create -> Material
然后可以给材质命名,设置颜色、贴图等属性
应用材质
- 方式1:拖动到物体上
- 方式2:通过代码赋值
Renderer renderer = GetComponent<Renderer>();
renderer.material = myMaterial;
材质在不同渲染管线中的区别
| 渲染管线 | 使用的着色器 | 特点 |
|---|---|---|
| Built-in | Standard Shader | 默认渲染管线 |
| URP | URP/Lit Shader | 性能优化,适合中低端设备 |
| HDRP | HDRP/Lit Shader | 高质量视觉,适合高端项目 |
材质的进阶使用
1.多材质
一个物体的每个sub-mesh都可以使用不同的材质
Renderer renderer = GetComponent<Renderer>();
renderer.materials[0] = mat1;
renderer.materials[1] = mat2;
2.材质属性通过代码修改
Material mat = renderer.material;
mat.SetColor("_Color", Color.red);
mat.SetFloat("_Glossiness", 0.3f);
如果你修改的是material而不是sharedMaterial,Unity会在运行时创建该材质的副本(实例化材质)
