📜  使用多种材质更改渲染器材质的颜色 - C# (1)

📅  最后修改于: 2023-12-03 14:49:54.208000             🧑  作者: Mango

使用多种材质更改渲染器材质的颜色 - C#

在渲染器中为材质设置颜色是一个非常基础和重要的需求。在 Unity 中,可以通过使用多种不同的材质类型和属性来实现此目的。本文将介绍如何在 C# 中使用不同的材质类型和属性来更改渲染器的材质颜色。

Shader

Shader 是一种控制顶点和像素着色的程序。在 Unity 中,Shader 可以直接创建,也可以选择内置 Shader 进行使用。要创建 Shader,可以在 Unity 的 Project 视图中选择 Create -> Shader。

开发者可以使用 C# 脚本中的 Shader 类型来引用和操作 Shader。可以使用该类的 SetColor 方法来更改 Shader 的颜色属性。以下是使用 Shader 更改材质颜色的示例代码:

Renderer renderer = gameObject.GetComponent<Renderer>();
renderer.material.shader = Shader.Find("Standard");
renderer.material.SetColor("_Color", Color.red);

该代码使用了 Unity 内置的 Standard Shader,并将其赋值给 Renderer 的材质。然后,将材质的颜色设置为红色。

Material

材质是 Shader 的实例化对象。Unity 中可以使用许多不同类型的材质,例如 Standard、Legacy Shaders、Mobile Shaders 等。可通过在 Project 视图中选择 Create -> Material 创建新材质。

要使用不同的材质来更改渲染器的颜色属性,可以像下面的示例代码一样使用 Renderer 类型来访问材质:

Renderer renderer = gameObject.GetComponent<Renderer>();
Material material = new Material(Shader.Find("Legacy Shaders/Diffuse"));
material.color = Color.red;
renderer.material = material;

该代码创建了一个 Legacy Shaders/Diffuse 材质,并将其颜色设置为红色。然后,将此新材质分配给 Renderer 的当前材质。

Texture

材质也可以使用纹理来渲染场景中的对象。在 Unity 中,可以使用各种不同的纹理类型和文件格式。若要在 C# 中更改材质的纹理属性,请执行以下操作:

Renderer renderer = gameObject.GetComponent<Renderer>();
Material material = new Material(Shader.Find("Standard"));
material.mainTexture = Resources.Load<Texture2D>("Textures/texture");
renderer.material = material;

该代码将材质的主纹理更改为位于“Textures/texture”位置的纹理文件。您可以在 Create -> Folder 中选择“Textures”文件夹并将纹理文件拖到该文件夹中,然后在代码中使用 Resources.Load 来获取该纹理。

结论

在 Unity 中,可以使用多种不同类型的材质和属性来更改渲染器的颜色属性。这篇文章介绍了一些基本的方法来使用 C# 代码更改材质的颜色属性。使用不同的 Shader、Material 和 Texture 可以为游戏增添更丰富的视觉体验。