using UnityEngine; namespace AmazingAssets.TerrainToMesh.Example { [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] public class ExportMeshAndBasemap : MonoBehaviour { public TerrainData terrainData; public int vertexCountHorizontal = 100; public int vertexCountVertical = 100; [Space(10f)] public bool exportHoles; public int mapsResolution = 512; private void Start() { if (!(terrainData == null)) { Mesh sharedMesh = terrainData.TerrainToMesh().ExportMesh(vertexCountHorizontal, vertexCountVertical, Normal.CalculateFromMesh); GetComponent().sharedMesh = sharedMesh; Texture2D value = terrainData.TerrainToMesh().ExportBasemapDiffuseTexture(mapsResolution, exportHoles, unpack: false); Texture2D texture2D = terrainData.TerrainToMesh().ExportBasemapNormalTexture(mapsResolution, unpack: false); Texture2D texture2D2 = terrainData.TerrainToMesh().ExportBasemapMaskTexture(mapsResolution, unpack: false); Material material = new Material(Shader.Find("Standard")); material.SetTexture("_MainTex", value); material.SetTexture("_BumpMap", texture2D); if (texture2D2 != null) { material.SetTexture("_MetallicGlossMap", texture2D2); material.EnableKeyword("_METALLICGLOSSMAP"); } if (texture2D != null) { material.EnableKeyword("_NORMALMAP"); } if (exportHoles) { material.SetFloat("_Mode", 1f); material.EnableKeyword("_ALPHATEST_ON"); } GetComponent().sharedMaterial = material; } } } }