您可以使用此委托在 Camera 剔除场景之前执行自定义代码。
在内置渲染管线中,Unity 会在执行确定 Camera 可以看到的内容的剔除操作之前调用 onPreCull
。要在此处执行自定义代码,请创建与 CameraCallback 签名匹配的回调,并将它们添加到此委托中。例如,您可以更改 Camera 的设置以影响 Camera 可以看到的内容。
对于仅适用于单个 Camera 且需要您的脚本位于同一 GameObject 上的类似功能,请参阅 MonoBehaviour.OnPreCull。
如果您使用的是可脚本化的渲染管线,例如通用渲染管线,请改用 RenderPipelineManager。
using UnityEngine;
public class CameraCallbackExample : MonoBehaviour { // Add your callback to the delegate's invocation list void Start() { Camera.onPreCull += OnPreCullCallback; }
// Unity calls the methods in this delegate's invocation list before rendering any camera void OnPreCullCallback(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.onPreCull -= OnPreCullCallback; } }