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 frame
void 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();
}
}
动态更改TerrainDetail的贴图
猜你喜欢
转载自blog.csdn.net/lei_7103/article/details/75390826
今日推荐
周排行