Unity 通过动态改变天空盒材质的_Exposure属性来达到天空变暗效果

public float exp = 1;
public float speed = 0.2f; // 控制速度,默认5秒
public Skybox sky;
Material tempMaterial;
void Start () {
    // 本质上是修改材质的属性,如果不新建一个材质会导致
    // 改变之后变不回来,所以此脚本只在新建材质上进行修改
    sky = GetComponent<Skybox>();
    tempMaterial = new Material(sky.material);
    RenderSettings.skybox = tempMaterial;  
}

void Update () {
    if (exp >= 0.2f) // 保证不完全变黑,可以去除
    {   
        exp -= Time.deltaTime * speed;
        tempMaterial.SetFloat("_Exposure", exp);
    }
}

ps. 可以挂载到空物体上,通过控制物体的激活状态来控制是否执行

ps. 事先需要先将天空盒的材质拖入到脚本挂载对象的sky属性上

ps. 可以通过菜单栏window菜单选择Randering->Lighting->Environment查看当前天空盒的材质

参考原文链接: http://t.csdn.cn/Oaj91

猜你喜欢

转载自blog.csdn.net/qq_51943845/article/details/132184540