📜  unity set material - C# (1)

📅  最后修改于: 2023-12-03 15:05:44.895000             🧑  作者: Mango

Unity Set Material - C#

在Unity中,材质(Material)是表现游戏对象的重要元素之一。材质决定了游戏对象的视觉效果和物理特性。通过设置不同的材质,可以使游戏对象具有不同的表现形式。在C#中,可以通过代码来设置材质。

获取游戏对象的材质

首先,我们需要获取游戏对象的材质。可以使用GetComponent<Renderer>().material方法获取当前游戏对象的材质,示例代码如下:

// 获取当前游戏对象的材质
Material material = GetComponent<Renderer>().material;

如果游戏对象上有多个材质,可以使用GetComponent<Renderer>().materials方法获取所有的材质,示例代码如下:

// 获取当前游戏对象的所有材质
Material[] materials = GetComponent<Renderer>().materials;
设置材质的属性

设置材质的属性是通过修改材质对象上的属性来实现的。Unity内置的材质属性有很多,如颜色、贴图、透明度、光照等。可以使用以下语句来修改常用材质属性:

material.color = Color.red;  // 设置材质的颜色为红色
material.mainTexture = texture;  // 设置材质的主贴图
material.SetFloat("_Metallic", 0.5f);  // 设置材质的金属度为0.5
material.SetFloat("_Glossiness", 0.5f);  // 设置材质的光泽度为0.5
material.SetFloat("_Mode", 2);  // 设置材质的透明模式为Fade

其中,_Metallic_Glossiness分别对应Unity默认的金属度和光泽度属性。_Mode是透明模式属性,取值为0、1、2、3,分别对应Opaque、Cutout、Fade和Transparent四种透明模式。

除了基本属性之外,还可以通过修改材质的Shader来实现更高级的效果。通过material.shader方法可以获取和设置材质的Shader。示例如下:

// 获取当前材质的Shader
Shader shader = material.shader;

// 修改当前材质的Shader
material.shader = Shader.Find("Custom/MyShader");
总结

本文介绍了如何通过C#代码来获取和修改Unity游戏对象的材质。其中包括获取单个材质和多个材质的方法,以及修改常用材质属性和修改材质的Shader。通过掌握这些技巧,可以实现更丰富多彩的游戏效果。