C# 以编程方式隐藏/显示地形
如何在运行时隐藏/显示地形和其他游戏对象(通过C代码)?C# 以编程方式隐藏/显示地形,c#,unity3d,terrain,C#,Unity3d,Terrain,如何在运行时隐藏/显示地形和其他游戏对象(通过C代码)? 我想以淡入淡出的方式显示/隐藏地形和游戏对象{ public class ChangeAlpha : MonoBehaviour { public Renderer Renderer; private Material _material; // Use this for initialization void Start () { _material = Renderer.material; StartCoroutin
我想以淡入淡出的方式显示/隐藏地形和游戏对象{
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);
}
}
公共服务;
私人材料(u材料),;
//用于初始化
无效开始(){
_material=Renderer.material;
开始例行程序(“更改”);
}
私有IEnumerator changeAlphaslow()
{
var增量金额=0f;
var_color=新颜色(0,0,1,0);
对于(int i=0;i<10;i++)//十步
{
增加金额+=0.1f;
_material.color=新颜色(0,0,1,递增量);
收益率返回新WaitForSeconds(0.1f);
}
}
}默认情况下,地形脚本使用内置着色器。此项不可访问,也不可修改
Material mat = terrain.materialTemplate;
Debug.Log(mat==null); // True
指定自定义着色器仅限于“自然”着色器,没有一个着色器提供颜色的使用。通常情况下,地形会忽略着色器的颜色
Material mat = terrain.materialTemplate;
Color c = mat.color;
c.a = 0.5f;
mat.color = c;
这将显示着色器颜色中的修改,但不会对地形本身产生影响
因此,您必须创建自己的着色器,如此要获得“淡入/淡出”样式,您将需要一个着色器。请告诉我们您为什么要这样做,这可能有助于给您一个合适的答案。您使用的是什么材质/着色器?标准?即使不在平面上绘制,也可以使用画布和画布组的alpha属性在相机上显示/隐藏效果。如果我想用淡入淡出stlye显示和隐藏场景中的所有游戏对象,我会使用这种方式。对不起,我想帮你。