Hide/show 地形编程

Hide/show terrain programmatically

如何在 运行 时间内 hide/show 地形和其他游戏对象(通过 C# 代码)?
我想 show/hide 地形和游戏对象 fade-in/out 风格

public class ChangeAlpha : MonoBehaviour {
public Renderer Renderer;
private Material _material;

// Use this for initialization
void Start () {
    _material = Renderer.material;
    StartCoroutine("ChangeAlphaSlowly");
}

private IEnumerator ChangeAlphaSlowly()
{
    var increaseAmount = 0f;
    var _color = new Color(0, 0, 1, 0);
    for (int i = 0; i < 10; i++)//ten step 
    {
        increaseAmount += 0.1f;
        _material.color = new Color(0, 0, 1, increaseAmount);          
        yield return new WaitForSeconds(0.1f);
    }

}

}

地形脚本默认使用内置着色器。这个不可访问也不可修改。

Material mat = terrain.materialTemplate;
Debug.Log(mat==null); // True

指定自定义着色器仅限于自然着色器,none 提供颜色的使用。似乎一般情况下地形会忽略着色器的颜色。

    Material mat = terrain.materialTemplate;
    Color c = mat.color;
    c.a = 0.5f;  
    mat.color = c;

这将在着色器颜色中显示修改,但不会影响地形本身。

因此,您必须创建自己的着色器,例如这个 http://wiki.unity3d.com/index.php/TerrainTransparency