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了,后来了解到是因为摄像机使用了延迟渲染路径,只要摄像机选择向前渲染路径就可以选择了。