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
如何在 运行 时间内 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