您可以使用此委托在 Camera 渲染场景后执行自定义代码。
在内置渲染管线中,Unity 在任何 Camera 完成渲染后调用 onPostRender
。要在此处执行自定义代码,请创建与 CameraCallback 签名匹配的回调,并将它们添加到此委托中。
对于仅适用于单个 Camera 并要求您的脚本位于同一个 GameObject 上的类似功能,请参阅 MonoBehaviour.OnPostRender。
如果您使用的是可脚本化的渲染管线,例如通用渲染管线,请改用 RenderPipelineManager。
要执行代码以在 Unity 渲染所有 Camera 和 GUI 后执行代码,请使用 WaitForEndOfFrame 或 CommandBuffer。
using UnityEngine;
public class CameraCallbackExample : MonoBehaviour { // Add your callback to the delegate's invocation list void Start() { Camera.onPostRender += OnPostRenderCallback; }
// Unity calls the methods in this delegate's invocation list before rendering any camera void OnPostRenderCallback(Camera cam) { Debug.Log("Camera callback: Camera name is " + cam.name);
// Unity calls this for every active Camera. // If you're only interested in a particular Camera, // check whether the Camera is the one you're interested in if (cam == Camera.main) { // Put your custom code here } }
// Remove your callback from the delegate's invocation list void OnDestroy() { Camera.onPostRender -= OnPostRenderCallback; } }