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); }
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); }
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 }