为什么着色器不包括构建对象?

时间:2020-10-29 11:40:46

标签: unity3d

我是Unity新手,对我来说有些奇怪。我创建了一个UnlitTextureYUV.shader文件,然后在这样的脚本中使用它

...
meshRenderer.material = new Material(Shader.Find("UnlitTextureYUV"));
...

然后在编辑器中,我单击“运行”按钮,然后看到一切正常,确定。然后,我单击File->Build&Run并得到一个错误ArgumentNullException,这意味着找不到着色器。

我试图找出正在发生的事情,并在Unity社区找到了这样的答案

https://answers.unity.com/questions/1147277/textures-from-local-works-in-editor-missing-in-bui.html

据我了解,为了在构建过程中动态使用着色器,我需要创建虚拟材质,向其添加纹理,甚至创建虚拟对象(禁用),然后将该材质添加到该对象。按此顺序,我的着色器将包含在构建中,并且可以通过调用此方法Shader.Find("UnlitTextureYUV")在代码中动态找到它。

问题是-是否有更直接的方法在构建中包含着色器?为什么需要创建虚拟对象才能将此文件包含在构建中?还是我想念什么?

1 个答案:

答案 0 :(得分:1)

您必须将所有着色器添加到Unity的“始终包括的着色器”列表中。 graphic settings

相关问题