unity Shader在使用Shader.Find时返回NULL

时间:2017-09-04 08:32:27

标签: unity3d unity5

如上所述here我不是唯一发现以下问题的人:

Shader.Find返回Null。

在上面的链接中,他们通过在资源文件夹中创建(?)来提供解决方案,但我不确定我理解。首先,这对所有情况都是必要的吗? (意思是Shader.Find本身不起作用?) 其次,我应该添加什么?一个没有点亮的着色器?一种材料? 这里很困惑

2 个答案:

答案 0 :(得分:4)

我最终可以通过以下方式解决问题:

首先,转到统一编辑器:编辑 - >项目设置 - >图像 然后在检查器中显示“Always Included Shaders”添加“Unlit / Texture”

然后将我的Shader.Find代码更改为Shader.Find("Unlit/Texture");

使用它不再返回null

答案 1 :(得分:2)

您应该将着色器添加到任何场景对象中,否则它们只能在编辑器中使用。 将着色器添加到“资源文件夹”中,或者可以创建新的着色器。

在资源文件夹中

右键单击->创建->材质 选择材质后,您将在检查器中看到“着色器”字段,为您选择合适的材质。

例如: 在我的脚本中;

var newMtl = new Material(Shader.Find("Standard (Specular setup)")) { name = materialName };

所以我添加了材质,然后选择“标准(镜面设置)”作为着色器。