/// <summary> /// 使用地形数据信息创建地形游戏对象 /// </summary> /// <param name="terrainData">属性数据</param> /// <param name="useTrrainData"></param> /// <returns></returns> public static LODTerrain CreateTerrainGameObject(LODTerrainData terrainData, bool useTrrainData = false) { GameObject gameObject = new GameObject(); LODTerrain lODTerrain = gameObject.AddComponent <LODTerrain>(); gameObject.isStatic = true; lODTerrain.terrainData = terrainData; lODTerrain.terrainConfig = GameScene.mainScene.terrainConfig; lODTerrain.mesh = new Mesh(); if (GameScene.isPlaying) { lODTerrain.mesh.vertices = terrainData.vertices; } else { if (LODTerrain.shareVertices == null) { LODTerrain.BuildShareVertices(); } if (terrainData.vertices != null) { lODTerrain.vertices = terrainData.vertices; } else { lODTerrain.vertices = LODTerrain.shareVertices; } lODTerrain.normals = terrainData.normals; lODTerrain.tangents = terrainData.tangents; lODTerrain.mesh.vertices = lODTerrain.vertices; lODTerrain.BuildUVs(); lODTerrain.mesh.normals = lODTerrain.normals; lODTerrain.mesh.tangents = lODTerrain.tangents; lODTerrain.BuildTriangles(); } gameObject.AddComponent <MeshFilter>().mesh = lODTerrain.mesh; lODTerrain.terrainRenderer = gameObject.AddComponent <MeshRenderer>(); if (GameScene.isPlaying) { lODTerrain.terrainRenderer.enabled = false; lODTerrain.terrainRenderer.receiveShadows = true; lODTerrain.terrainRenderer.castShadows = false; } return(lODTerrain); }