Version: 2022.1
public static Shader Find (string name);

描述

查找具有给定 name 的着色器。

可使用 Shader.Find 切换到其他着色器,无需保持对着色器的引用。 name 是可以在任何材质的着色器弹出窗口中看到的名称,例如“Standard”、“Unlit/Texture”、“Legacy Shaders/Diffuse”等。

注意,如果着色器没有引用方,着色器可能未包含在播放器版本中!这种情况下,Shader.Find 仅在 编辑器中起作用,在播放器版本中将生成粉红色“缺失着色器”材质。因此,建议使用 着色器引用,而不是按名称查找它们。要确保着色器包含在游戏版本中,则执行以下操作之一: 1) 从场景中使用的某些材质引用着色器,2) 将其添加在 ProjectSettings/Graphics 中的“Always Included Shaders”列表下,或者 3) 将着色器或其引用方(例如某个材质)放置到“Resources”文件夹中。

另请参阅:Material 类。

using UnityEngine;

public class Example : MonoBehaviour { // Create a material from code void Start() { // Create a material with transparent diffuse shader Material material = new Material(Shader.Find("Transparent/Diffuse")); material.color = Color.green;

// assign the material to the renderer GetComponent<Renderer>().material = material; } }