Пример #1
0
            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);
                }
            }