首页 > 解决方案 > Shader.Find("Standart") 返回 null

问题描述

我看到了这个问题,但这个解决方案对我没有帮助。

在自定义编辑器窗口中,我将标准着色器设置为某些材质。材料是从项目中的文件夹加载的:

        List<Material> materials = new List<Material>();
        string[] _matPaths = FindAssetPathsWithExtension(".mat", folderWithMaterials);
        foreach (string materialPath in _matPaths)
        {
            Material mat = AssetDatabase.LoadAssetAtPath(materialPath, typeof(Material)) as Material;
            if (mat != null) { materials.Add(mat); }
        }
        string filePath = "";

        for (int i = 0; i < materials.Count; i++)
        {
            materials[i].shader = Shader.Find("Standart");
            Debug.Log(materials[i].shader);
        }

图形设置截图:

在此处输入图像描述

调试日志:Hidden/InternalErrorShader (UnityEngine.Shader)

标签: c#unity3d

解决方案


我 120% 确定它不被称为标准(也许是标准?)。如果您想知道着色器的名称是什么,则必须查看源代码。您可以从 Unity 网站的下载部分获取 Unity 内置着色器的源代码。


推荐阅读