CSDN上搜到的答案没有一个管用的,所以我写一个来给其他遇到同样问题的朋友学习参考。
我的Unity版本时2021.3.29
在你的脚本中加入Volume引用
public Volume volume;
然后通过volume.profile.TryGet获取目标后处理重载效果,然后再通过目标参数的Override方法进行修改。
if (Input.GetKeyDown(KeyCode.LeftShift))
{
if (volume.profile.TryGet<ZoomBlur>(out zoomBlur))
{
zoomBlur.focusPower.Override(5f);
}
}
if (Input.GetKeyUp(KeyCode.LeftShift))
{
if (volume.profile.TryGet<ZoomBlur>(out zoomBlur))
{
zoomBlur.focusPower.Override(0f);
}
}
到这里就实现了,代码非常简单。
最后放一下我的自定义后处理的一些截图与对应参数的声明:
public class ZoomBlur : VolumeComponent, IPostProcessComponent
{
[Range(0f, 100f), Tooltip("加强模糊效果")]
//public FloatParameter focusPower = new FloatParameter(0f);
public FloatParameter focusPower = new ClampedFloatParameter(0f, 0f, 100f);
参数变量类型可能会影响Override方法传入参数的类型。
我的效果: