【问题标题】:How can I detect that Unity used error default shader through code?如何通过代码检测到Unity使用了错误的默认着色器?
【发布时间】:2023-01-12 21:47:33
【问题描述】:

Unity 中有什么方法可以通过脚本知道场景中存在洋红色错误着色器吗?比如,我们真的可以通过代码知道场景中渲染的材质实际上是洋红色,而不是我们想要的吗?

void Start() 
{ 
    Renderer[] renderers = FindObjectsOfType<Renderer>(); 
    foreach (var renderer in renderers) 
    { 
        foreach (var mat in renderer.materials) 
        { 
            if (mat.shader.name == "Hidden/InternalErrorShader") 
            { 
                //message 
                break; 
            } 
        } 
    } 
}

此代码始终返回着色器,分配给编辑器中的对象,而不是默认的洋红色错误着色器统一实际呈现。

我希望有一种方法可以确定洋红色错误着色器不仅通过眼睛呈现,而且通过代码呈现

【问题讨论】:

    标签: c# unity3d shader


    【解决方案1】:

    来自Error and loading shaders

    当对象的材质或着色器出现问题时,Unity 会使用默认错误着色器渲染该对象;例如,如果没有指定材质,着色器无法编译,或者着色器不受支持。

    因此,我认为您可以在 OnWillRenderObject 中检查 - 希望 - 该着色器已经应用,因为它是在渲染此对象之前调用的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      相关资源
      最近更新 更多