您的位置:首页 > 移动开发 > Unity3D

unity3d 脚本拷贝地形

2013-09-02 14:12 211 查看
遇到一个问题,解决方法是从创建好的地形拷贝一份新的地形,但是在拷贝的时候发现新地形和老地形实际使用的一份地形数据,在修改老地形数据的时候,新地形的数据也会相应变化。在网上搜索了一下从脚本创建地形的例子,稍微修改,可以满足我的需求,放在此处记录。

老地形的Terrain部分的变量叫做_terrain。

TerrainData terrainData = new TerrainData();

terrainData.heightmapResolution = _terrain.terrainData.heightmapResolution;
terrainData.size = _terrain.terrainData.size;
terrainData.wavingGrassAmount = _terrain.terrainData.wavingGrassAmount;
terrainData.wavingGrassSpeed = _terrain.terrainData.wavingGrassSpeed;
terrainData.wavingGrassStrength = _terrain.terrainData.wavingGrassStrength;
terrainData.wavingGrassTint = _terrain.terrainData.wavingGrassTint;
terrainData.detailPrototypes = _terrain.terrainData.detailPrototypes;
terrainData.treeInstances = _terrain.terrainData.treeInstances;
terrainData.treePrototypes = _terrain.terrainData.treePrototypes;
terrainData.alphamapResolution = _terrain.terrainData.alphamapResolution;
terrainData.baseMapResolution = _terrain.terrainData.baseMapResolution;
terrainData.splatPrototypes = _terrain.terrainData.splatPrototypes;

float [,] heights = _terrain.terrainData.GetHeights(0, 0, _terrain.terrainData.heightmapWidth,
_terrain.terrainData.heightmapHeight);
terrainData.SetHeights(0, 0, heights);

float[,,] alphaMap = _terrain.terrainData.GetAlphamaps(0, 0, _terrain.terrainData.alphamapWidth, _terrain.terrainData.alphamapHeight);
terrain.terrainData.SetAlphamaps(0, 0, alphaMap);

_newTerrainObj = Terrain.CreateTerrainGameObject(terrainData);
_newhTerrainObj.name = "TerrainNew";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: