【unity2D】URP通用渲染管线-学习记录1-代码控制URP集成下的post-processing
目标
最近在学unity中跟画面相关的功能。在看完B站上某URP教学视频后,希望能用代码控制post-processing中的相关参数。
前言
unity中,我们可以通过设置2dlight和post-processing来调整、渲染游戏画面。在unity更新至某版本后,unity官方用URP(UniversalRenderPipeline)集成了这两个功能。这里要注意:单独的postprocessing和URP集成下的post-processing,前者引用的命名空间是UnityEngine.Rendering.PostProcessing,而后者则是UnityEngine.Rendering 和 UnityEngine.Rendering.Universal。
代码相关
在按照视频教程设置好相关画面参数后,开始写代码
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;//引用所需的两个的命名空间
public class VolumeTest : MonoBehaviour
{
private Volume volume;//定义一个Volume
private Bloom bloom;//定义相关效果
private ChromaticAberration chromaticAberration;//定义相关效果
private void Start()
{
volume = GetComponent<Volume>();
volume.profile.TryGet(out bloom);//注意这里是要获取配置文件里的效果
volume.profile.TryGet(out chromaticAberration);
}
private void Update() {
if(Input.GetKeyDown(KeyCode.L))//按下L键处理画面
{
bloom.intensity.value = 26f;//这里赋值用value
chromaticAberration.intensity.value = 0.5f;
}
if(Input.GetKeyUp(KeyCode.L))//松开L键还原画面
{
bloom.intensity.value = 0f;
chromaticAberration.intensity.value = 0.0f;
}
}
}
最终效果
原画面:
处理后画面
总结
1.用代码控制URP集成下的post-processing时,使用using UnityEngine.Rendering 和 UnityEngine.Rendering.Universal两个命名空间,前者包含Volume,后者包含Volume配置文件下相关效果。
2.获取Volume配置文件下的效果时,使用
Volume名.profile.TryGet(out 效果名);
3.为该效果下的参数(参数不一定是intensity,但也类似下文写法)赋值时,使用
效果名.intensity.value = 所赋数值;