public static void ExportTerrainTexture() { TerrainData terrainData = Selection.activeObject as TerrainData; if (terrainData == null) { EditorUtility.DisplayDialog("Select Terrain", "You Must Select a Terrain first!", "Ok"); return; } EditorUtility.DisplayDialog("Select Terrain", "You select the Terrain of " + terrainData.name, "Ok"); var path = EditorUtility.SaveFilePanel("Save Resource", "", terrainData.name, "png"); if (path.Length == 0) { return; } //Get Ratio withRatio = terrainData.size.x / terrainData.alphamapWidth; heightRatio = terrainData.size.z / terrainData.alphamapHeight; // //get Terrain size // terrainWith = terrainData.size.x; // terrainHeight = terrainData.size.z; // // //Get AlphaMap size // alphaMapWith = terrainData.alphamapWidth; // alphaMapHeight = terrainData.alphamapHeight; // return; //Create return texture Texture2D texture = new Texture2D(terrainData.alphamapWidth, terrainData.alphamapHeight, TextureFormat.RGBA32, false); //blend map float [,,] splatmapData = terrainData.GetAlphamaps(0, 0, terrainData.alphamapWidth, terrainData.alphamapHeight); // Color[] colorList = new Color[ splatmapData.GetUpperBound(2) ];//newList<Color>( splatmapData.GetUpperBound(2) ); for (int i = splatmapData.GetLowerBound(0); i <= splatmapData.GetUpperBound(0); i++) { for (int j = splatmapData.GetLowerBound(1); j <= splatmapData.GetUpperBound(1); j++) { int channel = splatmapData.GetUpperBound(2); Color blendColor = Color.white; if (channel == 2) { blendColor = new Color(splatmapData[j, i, 0], splatmapData[j, i, 1], splatmapData[j, i, 2], 1); } else if (channel == 3) { blendColor = new Color(splatmapData[j, i, 0], splatmapData[j, i, 1], splatmapData[j, i, 2], splatmapData[j, i, 3]); } //for ( int k = splatmapData.GetLowerBound(2); k <= splatmapData.GetUpperBound(2); k++ ) //{ // Color color = GetSplatColor( terrainData.splatPrototypes[k], i , j ); // blendColor += splatmapData[i, j, k]; //} texture.SetPixel(i, j, blendColor); } } // float [,,] splatmapData = terrainData.GetAlphamaps( 0, 0, terrainData.alphamapWidth, terrainData.alphamapHeight ); // Texture2D texture = new Texture2D( terrainData.alphamapWidth, terrainData.alphamapHeight,TextureFormat.RGB24, false ); byte[] bytes = texture.EncodeToPNG(); File.WriteAllBytes(path, bytes); }