动态更改TerrainDetail的贴图

来源:互联网 发布:淘宝怎么管理店铺 编辑:程序博客网 时间:2024/06/05 10:04
public class TerrainDetailControl : MonoBehaviour {    public GameObject terrain;public Texture2D[] texx;//要更换为的贴图private List<Texture2D> detailsGameobject = new List<Texture2D>();private DetailPrototype[] newPrototypes;private DetailPrototype[] oriPrototypes;private bool isIR = false;    // Use this for initialization    void Start () {oriPrototypes = Terrain.activeTerrain.terrainData.detailPrototypes;//记录当前TerrainDetail的贴图newPrototypes = new DetailPrototype [texx.Length];for (int i = 0; i < texx.Length; i++) {newPrototypes [i] = new DetailPrototype ();newPrototypes [i].prototypeTexture = texx[i];newPrototypes [i].prototype = oriPrototypes[i].prototype;newPrototypes [i].maxHeight = oriPrototypes[i].maxHeight;newPrototypes [i].maxWidth = oriPrototypes[i].maxWidth;newPrototypes [i].minHeight = oriPrototypes[i].minHeight;newPrototypes [i].minWidth = oriPrototypes[i].minWidth;newPrototypes [i].bendFactor = oriPrototypes[i].bendFactor;newPrototypes [i].noiseSpread = oriPrototypes[i].noiseSpread;newPrototypes [i].healthyColor = new Color (100,100,100);//oriPrototypes[i].healthyColor;newPrototypes [i].dryColor = new Color (100,100,100);//oriPrototypes[i].dryColor;newPrototypes [i].usePrototypeMesh = oriPrototypes[i].usePrototypeMesh;newPrototypes [i].renderMode = oriPrototypes[i].renderMode;}    }// Update is called once per framevoid Update () {               if (Input.GetKeyDown(KeyCode.C))        {                  if (!isIR) {                    Terrain.activeTerrain.terrainData.detailPrototypes = newPrototypes;isIR = true;} else {                Terrain.activeTerrain.terrainData.detailPrototypes = oriPrototypes;isIR = false;}            Terrain.activeTerrain.terrainData.RefreshPrototypes();        }   }    void OnApplicationQuit()    {        Terrain.activeTerrain.terrainData.detailPrototypes = oriPrototypes;        Terrain.activeTerrain.terrainData.RefreshPrototypes();    }}