Unity PostProcessing - 在代码中改变绽放的颜色
Unity PostProcessing - changing color of bloom in code
我似乎无法找到一种方法来轻松地从代码更改统一后处理堆栈中 "bloom" 效果的颜色。这是我尝试过的方法,但没有效果:
var postProcessVolume = GameObject.FindObjectOfType<UnityEngine.Rendering.PostProcessing.PostProcessVolume>();
UnityEngine.Rendering.PostProcessing.Bloom bloom = postProcessVolume.profile.GetSetting<UnityEngine.Rendering.PostProcessing.Bloom>();
var colorParameter = new UnityEngine.Rendering.PostProcessing.ColorParameter();
colorParameter.value = mainPlayer.GenerateRandomColour();
bloom.color = colorParameter;
bloom.color.value = colorParameter.value;
bloom.enabled.value = true;
代码编译运行正常,但没有视觉效果。
我看过一些关于此的帖子,包括 here 和
here。我已经尝试了我能够在这些链接中找到的所有方法,但没有成功。
有没有一种简单的方法可以在 Unity 的代码中更改 "bloom" 效果的颜色?
使用覆盖(值)方法:
Bloom bloom = postProcessVolume.profile.GetSetting<UnityEngine.Rendering.PostProcessing.Bloom>();
var colorParameter = new UnityEngine.Rendering.PostProcessing.ColorParameter();
colorParameter.value = Color.red;
bloom.color.Override(colorParameter);
https://docs.unity3d.com/Packages/com.unity.postprocessing@2.0/manual/Manipulating-the-Stack.html
不确定是否有人需要这个,但我用 URP 做了类似于 vignette 的事情
private Vignette GetVignette()
{
for (int i = 0; i < volume.profile.components.Count; i++)
{
if(volume.profile.components[i] is Vignette)
{
return (Vignette)volume.profile.components[i];
}
}
return null;
}
我似乎无法找到一种方法来轻松地从代码更改统一后处理堆栈中 "bloom" 效果的颜色。这是我尝试过的方法,但没有效果:
var postProcessVolume = GameObject.FindObjectOfType<UnityEngine.Rendering.PostProcessing.PostProcessVolume>();
UnityEngine.Rendering.PostProcessing.Bloom bloom = postProcessVolume.profile.GetSetting<UnityEngine.Rendering.PostProcessing.Bloom>();
var colorParameter = new UnityEngine.Rendering.PostProcessing.ColorParameter();
colorParameter.value = mainPlayer.GenerateRandomColour();
bloom.color = colorParameter;
bloom.color.value = colorParameter.value;
bloom.enabled.value = true;
代码编译运行正常,但没有视觉效果。
我看过一些关于此的帖子,包括 here 和
here。我已经尝试了我能够在这些链接中找到的所有方法,但没有成功。
有没有一种简单的方法可以在 Unity 的代码中更改 "bloom" 效果的颜色?
使用覆盖(值)方法:
Bloom bloom = postProcessVolume.profile.GetSetting<UnityEngine.Rendering.PostProcessing.Bloom>();
var colorParameter = new UnityEngine.Rendering.PostProcessing.ColorParameter();
colorParameter.value = Color.red;
bloom.color.Override(colorParameter);
https://docs.unity3d.com/Packages/com.unity.postprocessing@2.0/manual/Manipulating-the-Stack.html
不确定是否有人需要这个,但我用 URP 做了类似于 vignette 的事情
private Vignette GetVignette()
{
for (int i = 0; i < volume.profile.components.Count; i++)
{
if(volume.profile.components[i] is Vignette)
{
return (Vignette)volume.profile.components[i];
}
}
return null;
}