public static Material[] CopySPBRMaterialsAndTexturesToDst(MeshRenderer mr, string dstDirectory, System.Func <MaterialInfo, Material> func) { if (mr) { MaterialInfo[] matInfos = GraphicsUtili.Get_MaterialInfo(mr, " "); if (matInfos != null) { Material[] materials = new Material[matInfos.Length]; for (int i = 0; i < matInfos.Length; i++) { MaterialInfo info = matInfos[i]; string materialPath = ToUnity(dstDirectory + "/" + info.matName + ".mat"); Material material = AssetDatabase.LoadAssetAtPath <Material>(materialPath); if (material == null) { if (func == null) { material = new Material(Shader.Find("MSO/Standard/SPBR")); } else { material = func(info); } material.SetTexture("_MainTex", TextureUtil.CopyTextureToDest(info.path_D, dstDirectory)); material.SetTexture("_BumpMap", TextureUtil.CopyTextureToDest(info.path_N, dstDirectory)); AssetDatabase.CreateAsset(material, materialPath); AssetDatabase.Refresh(); } materials[i] = material; } return(materials); } else { return(null); } } else { return(null); } }