Exemple #1
0
    /// <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);
    }