您可以使用此委托在 RenderPipeline.Render 结束时调用自定义代码。
当 Unity 在 RenderPipeline.Render 结束时调用 RenderPipeline.BeginContextRendering 时,它会执行此委托调用列表中的方法。
在通用渲染管线 (URP) 和高清渲染管线 (HDRP) 中,Unity 会自动调用 RenderPipeline.BeginContextRendering。如果您正在编写自定义的可脚本化渲染管线,则必须自行调用此方法。此功能与内置渲染管线不兼容。
此委托的工作方式与 RenderPipelineManager.endFrameRendering 相同,只是此版本不会导致堆分配。
以下代码示例演示如何将方法添加到此委托的调用列表中,以及之后如何将其移除。
using UnityEngine; using UnityEngine.Rendering; using System.Collections.Generic;
public class ExampleClass : MonoBehaviour { void Start() { RenderPipelineManager.endContextRendering += OnEndContextRendering; }
void OnEndContextRendering(ScriptableRenderContext context, List<Camera> cameras) { // Put the code that you want to execute at the end of RenderPipeline.Render here }
void OnDestroy() { RenderPipelineManager.endContextRendering -= OnEndContextRendering; } }