我是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")
在代码中动态找到它。
问题是-是否有更直接的方法在构建中包含着色器?为什么需要创建虚拟对象才能将此文件包含在构建中?还是我想念什么?