在 Unity 渲染单个摄像机之前,可以使用代表来调用自定义代码。
当 Unity 调用 RenderPipeline.BeginCameraRendering 时,它将执行此委托的调用列表中的方法。
在通用渲染管线 (URP) 和高精渲染管线 (HDRP) 中,Unity 会自动调用 RenderPipeline.BeginCameraRendering。如果您正在编写自定义可编程渲染管线并且希望使用此委托,您必须添加对 RenderPipeline.BeginCameraRendering 的调用。
以下代码示例说明了如何向此委托的调用列表中添加方法,以及稍后如何将其删除。
using UnityEngine; using UnityEngine.Rendering;
public class ExampleClass : MonoBehaviour { void Start() { RenderPipelineManager.beginCameraRendering += OnBeginCameraRendering; }
void OnBeginCameraRendering(ScriptableRenderContext context, Camera camera) { // Put the code that you want to execute before the camera renders here // If you are using URP or HDRP, Unity calls this method automatically // If you are writing a custom SRP, you must call RenderPipeline.BeginCameraRendering }
void OnDestroy() { RenderPipelineManager.beginCameraRendering -= OnBeginCameraRendering; } }