示例#1
0
        public int ExportMesh(Mesh mesh, GameObject obj)
        {
            int meshId = mesh.GetInstanceID();

            #if UNITY_EDITOR
            if (!meshLinks.ContainsKey(meshId))
            {
                string meshName = "mesh_" + meshId.ToString() + "_" + WG_Helper.NormalizeName(mesh.name);
                string meshLink = "meshes/" + meshName;
                string meshPath = AssetDatabase.GetAssetPath(mesh);
                if (meshPath.Length > 0)
                {
                    AssetImporter.GetAtPath(meshPath).SetAssetBundleNameAndVariant(meshLink, "");

                    meshLinks.Add(meshId, new NameLinkPath()
                    {
                        link = meshLink, name = mesh.name, path = meshPath
                    });
                }
                else
                {
                    Debug.Log("Mesh component of the object " + obj.name + " not saved as asset. Save it before exorting scene.");
                }
            }
            #endif
            return(meshId);
        }
示例#2
0
        public int ExportMaterial(Material material)
        {
            int materialId = material.GetInstanceID();
            int shaderId   = material.shader.GetInstanceID();

            #if UNITY_EDITOR
            //should we add the shader to the asset bundle
            if (!shaderLinks.ContainsKey(shaderId))
            {
                Shader shader     = material.shader;
                string shaderName = "shader_" + shaderId.ToString();
                string shaderLink = "shaders/" + shaderName;
                string assetPath  = AssetDatabase.GetAssetPath(shader);
                AssetImporter.GetAtPath(assetPath).SetAssetBundleNameAndVariant(shaderLink, "");

                shaderLinks.Add(shaderId, new NameLinkPath()
                {
                    link = shaderLink, name = shaderName, path = assetPath
                });
            }
            if (!materialLinks.ContainsKey(materialId))
            {
                string matName   = "material_" + materialId.ToString() + "_" + WG_Helper.NormalizeName(material.name);
                string matLink   = "materials/" + matName;
                string assetPath = AssetDatabase.GetAssetPath(material);

                //iterate throw parameters of the material and try to find all textures
                Shader shader     = material.shader;
                int    propsCount = ShaderUtil.GetPropertyCount(shader);
                for (int i = 0; i < propsCount; i++)
                {
                    if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv)
                    {
                        string  texPropName = ShaderUtil.GetPropertyName(shader, i);
                        Texture tex         = material.GetTexture(texPropName);
                        ExportTexture(tex);
                    }
                }
                AssetImporter.GetAtPath(assetPath).SetAssetBundleNameAndVariant(matLink, "");

                materialLinks.Add(materialId, new NameLinkPath()
                {
                    link = matLink, name = material.name, path = assetPath
                });
            }
            #endif
            return(materialId);
        }
示例#3
0
        public void ExportTexture(Texture tex)
        {
            #if UNITY_EDITOR
            if (tex != null)
            {
                int texId = tex.GetInstanceID();
                if (!textureLinks.ContainsKey(texId))
                {
                    string texName = "texture_" + texId.ToString() + "_" +
                                     WG_Helper.NormalizeName(tex.name);
                    string texPath = AssetDatabase.GetAssetPath(tex);
                    string texLink = "textures/" + texName;
                    AssetImporter.GetAtPath(texPath).SetAssetBundleNameAndVariant(texLink, "");

                    textureLinks.Add(texId, new NameLinkPath()
                    {
                        link = texLink, name = texName, path = texPath
                    });
                }
            }
            #endif
        }