static void ReplaceDiffuse() { Shader newShader = Shader.Find("MyMobile/Diffuse"); List <Transform> list = new List <Transform>(); GTTools.FindAllChildren(Selection.activeGameObject.transform, list); for (int i = 0; i < list.Count; i++) { GameObject go = list[i].gameObject; MeshRenderer renderer = go.GetComponent <MeshRenderer>(); if (renderer == null) { continue; } Material[] materials = renderer.sharedMaterials; for (int k = 0; k < materials.Length; k++) { Material mat = materials[k]; if (mat.shader.name == "MyMobile/Diffuse_old" || mat.shader == null) { mat.shader = newShader; } } } }