GameObject segment = GameObject.Find("DisplayArea_" + i);
MeshRenderer renderer = segment.GetComponent<MeshRenderer>();
Material mat = new Material(Shader.Find("Custom/MyShader"));
mat.mainTexture = option.Image360;
上面这份代码,在Unity Editor中可以使用,但是编译到Quest 2之后,却没有反应。这可能是由于多种原因引起的,可以按照下面的步骤修改。
设置Graphics API
The Oculus Quest 2 primarily uses OpenGL ES and Vulkan.
确保shader compatible with the Graphics API
设置Graphics
如果使用Visual Studio联调的话,可能会看到这个报错:
System.ArgumentNullException: Value cannot be null.
Parameter name: shader
解决方案:
Go to the graphics settings in Unity (Edit > Project Settings > Graphics) and make sure your custom shader is included in the list of always included shaders. This ensures the shader is compiled into the build.
除了自己的custom shader需要拖进来之外,一些内置的shaders,例如Unlit/Texture 也需要拖进来。这可能是由于将Graphics API修改了,这些内置的shaders也不能被找到了。文章来源:https://www.toymoban.com/news/detail-861751.html
其他
如果还不行,那可能是其他代码逻辑的问题,或者是shader的问题。那可以先写一个简单的shader,例如简单变成红色,赋值到一个default cube or sphere上,一步一步地看是哪里出了问题。例如在我的代码中,就发现全部360图片呈现白色,是因为另外一个球遮挡住了其他球。文章来源地址https://www.toymoban.com/news/detail-861751.html
到了这里,关于Shader for Quest 2: 自定义shader在Unity Editor中可以使用,但是在Quest 2中却不可以的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!