Unity2021在URP模式下,假设场景中有2个摄像机A和B,如果希望B摄像机渲染的内容覆盖到A摄像机上面,那么摄像机B的RenderType设置为Overlay,在A摄像机的Stack中添加B摄像机就可以了。
渲染内容覆盖的顺序取决于添加的顺序,可以手动拖拽来改变顺序。
使用代码控制的方法参考如下:
using UnityEngine;
using UnityEngine.Rendering.Universal;
public class NewBehaviourScript : MonoBehaviour
{
[SerializeField]
Camera camBase;
[SerializeField]
Camera camOverlay01;
[SerializeField]
Camera camOverlay02;
UniversalAdditionalCameraData camData;
void Start()
{
camData = camBase.GetUniversalAdditionalCameraData();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
camData.cameraStack.Add(camOverlay01);
}
if (Input.GetMouseButtonDown(2))
{
camData.cameraStack.Add(camOverlay02);
}
if (Input.GetMouseButtonDown(1))
{
camData.cameraStack.Clear();
}
}
}
这里cameraStack就是个List。
需要补充说明一下的是,有一次手动选择摄像机的RenderType时莫名其妙的发现,摄像机的RenderType中的Overlay选项不可用,当时都觉得Unity是不是bug了,后来了解到是因为摄像机使用了延迟渲染路径,只要摄像机选择向前渲染路径就可以选择了。
在Unity的URP渲染管线中,通过设置摄像机的RenderType为Overlay,并调整摄像机Stack的顺序,可以实现一个摄像机内容覆盖另一个的效果。本文介绍了如何手动和通过代码控制摄像机的渲染顺序,以及解决RenderType Overlay不可选的问题,涉及关键概念如UniversalAdditionalCameraData和相机渲染堆叠管理。

2513

被折叠的 条评论
为什么被折叠?



