动态更改TerrainDetail的贴图

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();
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值