在内置渲染管道中,Unity 会在 相机 组件启用并附加到相同游戏对象的 MonoBehaviour 上调用 OnPreCull
,就在该相机执行确定其可见内容的剔除操作之前。使用 OnPreCull
在渲染循环的此点执行您自己的代码;例如,您可以在执行剔除操作之前更改相机的设置,以影响相机看到的内容。 OnPreCull
可以是一个协程。
对于不需要脚本与相机组件位于相同游戏对象上的类似功能,请参见 Camera.onPreCull。对于可编程渲染管道中的类似功能,请参见 RenderPipelineManager.
// Attach this to the same GameObject as a Camera component. // This script inverts the view of the Camera, so that everything rendered by it is flipped
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { Camera cam;
void Start() { cam = GetComponent<Camera>(); }
void OnPreCull() { cam.ResetWorldToCameraMatrix(); cam.ResetProjectionMatrix(); cam.projectionMatrix = cam.projectionMatrix * Matrix4x4.Scale(new Vector3(1, -1, 1)); }
void OnPreRender() { GL.invertCulling = true; }
void OnPostRender() { GL.invertCulling = false; } }