【unity2D】URP通用渲染管线-学习记录1-代码控制URP集成下的post-processing

目标

最近在学unity中跟画面相关的功能。在看完B站上某URP教学视频后,希望能用代码控制post-processing中的相关参数


前言

unity中,我们可以通过设置2dlight和post-processing来调整、渲染游戏画面。在unity更新至某版本后,unity官方用URP(UniversalRenderPipeline)集成了这两个功能。这里要注意:单独的postprocessingURP集成下的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;
		}
	}
}

最终效果
原画面:
image

处理后画面
image


总结

1.用代码控制URP集成下的post-processing时,使用using UnityEngine.Rendering 和 UnityEngine.Rendering.Universal两个命名空间,前者包含Volume,后者包含Volume配置文件下相关效果。
2.获取Volume配置文件下的效果时,使用

Volume名.profile.TryGet(out 效果名);

3.为该效果下的参数(参数不一定是intensity,但也类似下文写法)赋值时,使用

效果名.intensity.value = 所赋数值;
posted @ 2021-04-04 19:29  AshScops  阅读(2347)  评论(0编辑  收藏  举报