unity Shader returns 使用时为NULL Shader.Find

unity Shader returns a NULL when using Shader.Find

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

Shader.Find returns 一个 Null。

在上面的 link 中,他们通过在资源文件夹中创建一些东西(?)给出了解决方案,但我不确定我是否理解。首先,这对所有情况都是必要的吗? (意思是 Shader.Find 本身不起作用?) 第二,我应该添加什么?一个未点亮的着色器?? material? 在这里很困惑

我可以通过执行以下操作最终解决问题:

首先,进入unity编辑器:编辑->项目设置->图形 然后在显示 "Always Included Shaders" 的检查器中添加 "Unlit/Texture"

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

有了这个它就不再 return null

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

在资源文件夹中

右键单击 -> 创建 -> Material 当你 select material 你会在检查器中看到着色器字段,选择适合你的。

例如: 在我的脚本中;

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

所以我添加了 material 和 select 标准(高光设置)作为着色器。